我已成功使用CGImageSource读取(主要是JPEG)图像和CGImageDestination以将其写回。它可以工作,但我的图像比以前小很多(3.9Mb图像将成为2.1 Mb图像)。
我一直在玩kCGImageDestinationLossyCompressionQuality虽然它确实影响了文件的大小,但我不明白它使用的规模。
E.g。相同的3.7Mb文件将其大小更改为:
1.9Mb,压缩质量为0.7
2.4Mb,压缩质量为0.8
3.0Mb,压缩质量为0.9
7.4Mb,压缩质量为1.0
我尝试了所有的东西(使用二分法得到6位小数)来找到回归魔法3.9Mb的最佳位置,但它从3.3Mb跳到7.4Mb,似乎无法让它保持在这两个数字之间
我是否可以使用任何其他Objective-C库来修改单独留下压缩(以及文件大小)的EXIF数据?
答案 0 :(得分:2)
使用CGImageDestination您正在创建一个新图像,并且新创建的图像的大小与原始图像的大小相匹配非常困难。 (取决于压缩级别)。
如果您只需修改原始图片中的元数据,而不更改图像信息,则应使用其他库。我知道其中有两个可用于可可应用程序:
另一种选择是使用exiftool。它是一个perl脚本,已成为更改元数据信息的事实标准。您可以将其包含在应用程序的resources文件夹中,并使用NSTask调用它来更改图片的元数据。很容易做到,也是迄今为止三者中最好的工具。 (仅适用于mac,不确定是否针对iphone或Mac)