【问题标题】:unable to form NSData using UIImage无法使用 UIImage 形成 NSData
【发布时间】:2016-01-16 00:31:47
【问题描述】:

我有一个UIImage,我想用它制作NSData,然后保存到一个文件中。

问题是我可以生成UIImage,但是当通过它生成NSData 时,我得到了nil 的值。我尝试了UIImagePNGRepresentationUIImageJPEGRepresentation

这是我的详细调试代码:

UIImage *img  = [self.mImagesArray objectAtIndex:index];
NSData *imageData = UIImagePNGRepresentation(img);  //nil
NSData *imgData2 = UIImageJPEGRepresentation(img, 50); //nil  i tried chaning 50 to 0.5 it also not working
[imageData writeToFile:imagePath atomically:YES];

这是显示我正在获取 UIImage 但无法形成 NSData 的图像:

编辑

我正在从 UIImagePicker 获取图像并将其添加到数组中:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

if (!self.mImagesArray)
    self.mImagesArray = [[NSMutableArray alloc] init];

[self.mImagesArray addObject:[info objectForKey:UIImagePickerControllerOriginalImage]];

}

【问题讨论】:

  • imgData2 呢?
  • 你能打印结果吗-->你的 [self.mImagesArray objectAtIndex:index];包含

标签: ios objective-c xcode uiimage nsdata


【解决方案1】:

来自文档UIImagePNGRepresentation

返回值 包含 PNG 数据的数据对象,如果生成数据时出现问题,则返回 nil。如果图像没有数据或底层 CGImageRef 包含不受支持的位图格式的数据,此函数可能会返回 nil。


你有 UIImage 但这并不能保证它有数据,例如

UIImage *img = [[UIImage alloc] init];
NSData *data = UIImagePNGRepresentation(img);

在这种情况下,您有非 nil UIImage 对象,但它不包含任何数据,因此它将返回 nil NSData

【讨论】:

  • 我怎样才能解决这个问题..但我得到 UIImage 正确..我从图像选择器中选择它
  • 您能发布代码吗?您是如何创建图像然后添加到数组中的?
  • 看起来很完美,我想您应该在任何图像视图中显示此图像,看看它是否正在显示
【解决方案2】:

试试这个。

UIImage *image = [UIImage imageNamed:@"imageName.png"];
NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)];

【讨论】:

  • @RahulMishra 检查附件图片。
【解决方案3】:

这条线适合我。

UIImage *img  = [UIImage imageNamed:@"oval.png"];//[self.mImagesArray objectAtIndex:index];
NSData *imageData = UIImagePNGRepresentation(img);

所以,你的图片有问题。

UIImagePNGRepresentation 如果图像没有 CGImageRef 或位图格式无效,则可能返回 nil

请检查

【讨论】:

    【解决方案4】:

    首先检查你的索引,在哪个索引处你没有得到图像或得到 nil。因为每次拾取图像时,您都在为数组分配内存。所以首先在视图中分配数组是否加载或视图将根据需要出现。并尝试通过考虑这一点来调试您的代码。

    希望对你有帮助!!

    【讨论】:

    • 嗨@meera 我已经分配了数组,并且我也在数组中获取图像对象。但不知道为什么我得到这个零值
    • 其实你想做什么,根据要求我可以建议你。
    • 我有一个场景,用户可以上传五张图片......然后他可以添加或删除图片..图片数量限制为五个我必须设计这个场景
    • 好的,做一件事尝试将您的图像存储在文档目录中并使用此图像显示。它会起作用的。保存图片参考link here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 2017-03-24
    相关资源
    最近更新 更多