我通过
从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()降低了原始图像的大小?
是否有另一种方法可以减小图像的文件大小,而不改变高度和宽度?
答案 0 :(得分:1)
[UIImage imageWithData:UIImageJPEGRepresentation(image, 0.8)]
这行代码实际上对图像的内存占用没有任何作用。由于JPEG表示,它只会导致质量下降。
假设您需要显示图像,唯一可以降低内存占用量的方法是将其裁剪/缩放到较小的尺寸。
如果您不需要显示图像,可以通过存储UIImageJPEGRepresentation(图像,0.8)返回的返回NSData来以JPEG格式存储图像。