我要求用户可以从camera roll
中选择图像,我的应用程序需要优化图像并将其上传到服务器。我正在使用ALAssets
库和自定义选择器供用户从camera roll
中选择一张照片。我能够完美地实现这一目标,但是文件大小增加了。
问题如下:
当用户选择1.7MB的照片时(当我尝试邮寄照片时,iOS
报告的完整尺寸),当我直接从ALAssetRepresentation
获取字节时{1}}并将其转换为ALAsset
,数据大小也是1.7 MB。但是,当我使用以下代码从NSData
获取UIImage时..
UIImage * selImage = [UIImage imageWithCGImage:[assetRepresentation fullResolutionImage] scale:[assetRepresentation scale] orientation:[assetRepresentation orientation]];
并使用压缩质量= 1.0f的ALAssetRepresentation
将UIImage
转换为NSData
,NSData大小几乎是原始大小的两倍(3.2MB)。
理想情况下,它不应该只有1.7MB吗?
正如预期的那样,当我将其保存到文件时,文件大小仍为3.2MB(我通过导入沙箱应用程序的文档文件夹使用xcode 4.2进行了检查)。但有趣的是当我在我的mac上用UIImageJPEGRepresentation()
打开文件,并检查字节大小时,它说1.7MB(3.2 MB),这非常令人困惑..
请帮助..
提前致谢。
答案 0 :(得分:1)
您指定的压缩质量是多少?这与原始图像上使用的相同或不同吗?如果不同,请尝试使用相同的压缩因子,看看大小是否相同。
NSData * UIImageJPEGRepresentation (
UIImage *image,
CGFloat compressionQuality
);