我想对用户库中的照片应用过滤器,然后将其写回磁盘。我正在使用UIImageJPEGRepresentation
。此函数的UIImage
和compressionQuality
值介于0.0和1.0之间。因为我想保留原始质量,所以我将其设置为1.0。但我发现这实际上会创建一个文件大小比原始文件更大的图像文件,甚至更大一些。我注意到在Apple的Sample Photo Editing Extension应用程序中,他们总是将质量设置为0.9。我试过了,它输出的文件大小接近原始照片文件大小。这对我来说没有意义。有人可以解释一下吗?始终使用0.9是否合适? iOS相机是否使用该值压缩它,因此0.9是原始质量?或者为什么0.9不实际为1.0,如果没有什么比这更好的质量呢?
NSData *renderedJPEGData = UIImageJPEGRepresentation(image, 0.9f);
答案 0 :(得分:2)
这是一个老问题,你可能已经为自己解决了这个问题,但如果有人仍然感兴趣,这可能有所帮助。
(我不是JPEG专家)
UIImageJPEGRepresentation
并未考虑过去图像的压缩方式,只是压缩了当时的图像。
您提到了用户图书馆中的照片"。用户可以在其库中拥有任何图像,在任何compressionQuality
压缩。
要尝试将图片保持为相同的文件大小,您需要知道它最初是如何保存的,即使您使用相同的compressionQuality
,也可能会导致文件不同大小,因为被压缩的数据不同。
至于使用0.9的compressionQuality
来保存图像,这取决于您对图像质量的评价程度与您想要使用的空间大小。 0.7似乎经常被认为是一个很好的平衡。
我不确定iOS相机应用程序压缩图像的程度(如果有的话)并且我不确定它是否保证是最佳质量。如果它使用0.9,您可以随时创建一个拍摄照片的应用程序,并在保存之前将其压缩。
我希望有所帮助。
答案 1 :(得分:-3)
您可以将PNG表示中的图像转换为原始图像质量。
UIImagePNGRepresentation(image)