我从Iphone 5摄像头获得图像

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:   (NSDictionary *)info {
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
    ...
    }


根据调试导航器,映像大小必须约为30MB。
方法完成后(如果方法未执行任何操作),这30MB将再次变为可用。
但是,当我想使用上述方法中的这一行代码保存图像时:

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


30MB保留在内存中。我了解该图像必须有一些内存,但不能有30MB。我以为我使用UIImageJPEGRepresentation()减小了原始图像的大小?

有没有其他方法可以减小图像的文件大小,而无需更改高度和宽度?

最佳答案

[UIImage imageWithData:UIImageJPEGRepresentation(image, 0.8)]


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

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

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

10-08 05:47