来自UIImagePickerController的UIImage太大了

时间:2014-02-10 23:12:00

标签: ios objective-c uiimage

我通过

从Iphone 5相机获取图像
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:   (NSDictionary *)info {
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
    ...
    }

根据Debug Navigator,图像大小必须大约为30MB。 方法完成后(方法中没有任何操作),这些30MB再次变为空闲。 但是,当我想用​​上面的方法中的这行代码保存图像时:

self.myImage = [UIImage imageWithData:UIImageJPEGRepresentation(image, 0.8)];

留在记忆中的30MB。我知道必须有一些内存用于图像,但不是30MB。我以为我用UIImageJPEGRepresentation()降低了原始图像的大小?

是否有另一种方法可以减小图像的文件大小,而不改变高度和宽度?

1 个答案:

答案 0 :(得分:1)

[UIImage imageWithData:UIImageJPEGRepresentation(image, 0.8)]

这行代码实际上对图像的内存占用没有任何作用。由于JPEG表示,它只会导致质量下降。

假设您需要显示图像,唯一可以降低内存占用量的方法是将其裁剪/缩放到较小的尺寸。

如果您不需要显示图像,可以通过存储UIImageJPEGRepresentation(图像,0.8)返回的返回NSData来以JPEG格式存储图像。