我从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格式存储图像。