3

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

问题如下:
当用户选择一张 1.7MB 的照片时(这是iOS我尝试邮寄照片时报告的完整大小),当我直接从中获取字节ALAssetRepresentation并将ALAsset其转换NSData为数据大小也是1.7MB。ALAssetRepresentation但是,当我使用以下代码 获得 UIImage 时..

UIImage *selImage = [UIImage imageWithCGImage:[assetRepresentation fullResolutionImage] scale:[assetRepresentation scale]orientation:[assetRepresentationorientation]];

并将其转换UIImageNSData使用UIImageJPEGRepresentation()压缩质量 = 1.0f,NSData 大小几乎是原始大小(3.2MB)的两倍。

理想情况下不应该只有 1.7MB 吗?

正如预期的那样,当我将它保存到文件时,文件大小仍然为 3.2MB(我通过导入沙盒应用程序的文档文件夹使用 xcode 4.2 检查它)。但有趣的是,当我Preview在我的 Mac 上打开文件并检查字节大小时,它显示为 1.7MB(原为 3.2MB),这非常令人困惑。

请帮忙..

提前致谢。

4

1 回答 1

1

您指定什么压缩质量?这与原始图像上使用的相同还是不同?如果不一样,就用同样的压缩系数试试,看大小是否一样。

NSData * UIImageJPEGRepresentation (
   UIImage *image,
   CGFloat compressionQuality
);
于 2012-07-16T08:58:54.710 回答