【发布时间】:2017-01-17 03:08:28
【问题描述】:
我正在做一个简单的图像文件缩小任务,但遇到了这个问题。当对 JPEG 使用无损选项时,文件大小是图像的原始 NSData(相同分辨率)的三倍。有什么建议吗?
下面是简单的代码:
let data = someImageData
print(data.length)
let image = UIImage(data: data)!
let newImageData = UIImageJPEGRepresentation(image, 1)
print(newImageData.length)
let newImageData = UIImageJPEGRepresentation(image, 0.8)
print(newImageData.length)
和输出:
2604768 //original length
8112955 //new length if compression = 1
2588870 //new length if compression = 0.8
看来我必须采取 0.8 质量损失才能获得相同的数据长度。我错过了什么?请帮忙。
编辑:我通过将数据转换为 UIImage 然后转换为 UIImageJPEGRepresentation(image, 1) 进行了更多测试,新数据的长度大小每个周期都会增加。但是如果我使用 UIImageJPEGRepresentation(image, 0.8),新数据的长度大小会减少一点(很少),但是,复合限定损失应该是一个问题。
【问题讨论】:
-
我再次搜索并找到了这个问题:stackoverflow.com/questions/11500396/… 但是,即使经过4年多的时间,它仍然没有解决......