与UIImageJPEGRepresentaion转换UIImage的NSData的到(),并将其保

2019-09-19 13:18发布

我在其中,用户可以选择从图像的要求, camera roll和我的应用程序需要优化图像,并将其上传到服务器。 我使用ALAssets库和用户自定义选择器选择从照片camera roll 。 我能够完美地实现这一点,但有文件的大小问题得到提高。

问题如下:
当用户选择照片1.7MB的,(也就是所报告的全尺寸iOS当我尝试邮寄照片),当我直接从拿到字节ALAssetRepresentation是的ALAsset并将其转换为NSData大小数据是1.7MB过。 但是,当我从一个UIImage ALAssetRepresentation使用下面的代码..

的UIImage * selImage = [UIImage的imageWithCGImage:[assetRepresentation fullResolutionImage]规模:[assetRepresentation规模]取向:[assetRepresentation取向]];

和转换UIImageNSData使用UIImageJPEGRepresentation()与压缩质量= 1.0F,NSData的尺寸变得几乎两倍原来的大小(3.2MB)。

它不应该被理想地仅1.7MB?

正如预期的那样,当我把它保存到一个文件,文件的大小仍说3.2MB(我检查通过导入沙盒应用程序的文件夹使用的Xcode 4.2)。 但有趣的是,当我打开该文件Preview我的Mac上,并检查字节大小,它说1.7MB(3.2 MB),这是非常令人迷惑..

请帮忙..

提前致谢。

Answer 1:

什么压缩质量是你指定? 这是从什么是原始图像上使用的相同或不同? 如果是不同的,具有相同的压缩系数尝试一下,看看大小是一样的。

NSData * UIImageJPEGRepresentation (
   UIImage *image,
   CGFloat compressionQuality
);


文章来源: Converting UIImage to NSData with UIImageJPEGRepresentaion() and saving it to a file increases the file size in bytes