我想对来自用户库的照片应用滤镜,然后将其写回磁盘。我正在使用UIImageJPEGRepresentation
。该函数需要一个UIImage
和0.0到1.0之间的compressionQuality
值。因为我想保留原始质量,所以将其设置为1.0。但是我发现这实际上创建了一个文件大小比原始文件更大的图像文件,甚至有些显着更大。我注意到在苹果的示例照片编辑扩展应用程序中,他们总是将质量设置为0.9。我尝试了一下,它确实输出了一个接近原始照片文件大小的文件大小。这对我来说没有意义。有人能解释一下吗?是否适合始终使用0.9?iOS相机是否使用该值进行压缩,因此0.9是原始质量?如果没有任何更好的质量,为什么0.9实际上不是1.0呢?
NSData *renderedJPEGData = UIImageJPEGRepresentation(image, 0.9f);
UIImageJPEGRepresentation()
返回的NSData
并将其保存到文档目录中,还从此数据创建了UIImage
对象并将其保存到照片库中。两者具有相同的图像数据,但生成的图像大小不同(大小差异> 50 Kb)。同时我没有为它提供扩展名。无法弄清楚发生了什么。可能是在保存图像到照片库时会提供一些质量扩展或类似的东西。 - Kampai