如何在ios中将字节数组转换为图像

时间:2014-03-11 04:40:15

标签: ios uiimage bytearray nsdata

今天我的任务是将字节数组转换为图像

首先我尝试将图像转换为字节数组: -

首先要将Image转换为Byte数组,我们要做的是将特定图像[UIImage]转换为NSData。然后我们将NSData转换为Byte数组。在这里,我将给出示例代码,只需通过...

//Converting UIImage to NSData
    UIImage *image = [UIImage imageNamed: @"photo-04.jpg"];

    NSData *imageData = UIImagePNGRepresentation(image);

    //Converting NSData to Byte array
    NSUInteger len = [imageData length];
    NSLog(@"Byte Lendata1  %lu",(unsigned long)len);

    Byte *byteData = (Byte*)malloc(len);
    memcpy(byteData, [imageData bytes], len);

我尝试将此字节转换为imageView

 const unsigned char *bytes = [imageData bytes];

    NSUInteger length = [imageData length];

    NSMutableArray *byteArray = [NSMutableArray array];

    for (NSUInteger i = 0; i < length; i++) {
        [byteArray addObject:[NSNumber numberWithUnsignedChar:bytes[i]]];
    }
    NSDictionary *dictJson = [NSDictionary dictionaryWithObjectsAndKeys:
                              byteArray, @"photo",
                              nil];
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictJson options:0 error:NULL];
    NSLog(@"");
    UIImage *image1 = [UIImage imageWithData:jsonData];

    UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 100, 50)];


    imgView.image=image1;

我有输出转换图像到字节数组但我想将字节数组转换为图像 所以请先帮助我谢谢。

2 个答案:

答案 0 :(得分:4)

首先,您需要将字节转换为NSData

NSData *imageData = [NSData dataWithBytes:bytesData length:length];

然后,将数据转换回图像。

UIImage *image = [UIImage imageWithData:imageData];

我建议您在发生问题时首先搜索文档。

以下是全部:

UIImage *image = [UIImage imageNamed:@"RAC.png"];

NSData *imageData = UIImagePNGRepresentation(image);
// UIImageJPGRepresentation also work

NSInteger length = [imageData length];

Byte *byteData = (Byte*)malloc(length);
memcpy(byteData, [imageData bytes], length);

NSData *newData = [NSData dataWithBytes:byteData length:length];

UIImage *newImage = [UIImage imageWithData:newData];

UIImageView *imageView = [[UIImageView alloc] initWithImage:newImage];
imageView.frame = CGRectMake(50, 50, 100, 100);
[self.view addSubview:imageView];

答案 1 :(得分:1)

您使用错误的格式

表示数据

您的图片格式为jpg,并且您使用的是PNG数据。

对于jpgjpeg格式,您应使用UIImageJPEGRepresentation

NSData * UIImageJPEGRepresentation (
   UIImage *image,
   CGFloat compressionQuality
);

所需的陈述将是

NSData *imageData = UIImageJPEGRepresentation(image, 0.0f);// Set Compression quality to 0.0. You can change it.

对于png格式,您应该使用UIImagePNGRepresentation

NSData * UIImagePNGRepresentation (
   UIImage *image
);

所需的陈述将是

NSData *imageData = UIImagePNGRepresentation(image);

要将NSData转换回UIImage,请使用

UIImage *image = [UIImage imageWithData:imageData];

阅读APPLE DOCS。看图像操作