Cut*_*low 16 macos jpeg image cgimage ios
我使用CGImage的API( CGImageDestination,
CGBitmapContext,
,CGImage
在Mac OS X等)以及iOS的压缩图像为JPEG.使用该kCGImageDestinationLossyCompressionQuality
属性,您可以控制压缩质量:0.0
最大压缩和1.0
最高质量(如果可能,根据Apple,无损).
我发现当你去的时候,磁盘大小和图像质量都有很大的0.99
提升1.0.
.例如,我有一个2048x1368的图像,当质量设置为压缩到430 KB 0.99
但是当质量达到2.3 MB时设置为1.0.视觉质量也有很大的提升,并且0.99
这个特定图像的设置是不可接受的.尝试设置质量之间的任何东西0.99
来1.0
作为规模保持在430 KB,直到不起作用0.995
的地方跳起来2.3 MB.另外,是不是真的有素质相差无几0.90
,以0.99
在视觉质量有较大提升其范围的文件大小从353〜KB至430 KB,但不是.
有谁知道是否有任何方法可以提高JPEG质量?我真的需要的东西比0.99
给予我的东西更好但却少于1.0
提供给我的东西.也许我可以使用其他一些API?
我可能会尝试直接使用libjpeg,但我希望它不会出现这种情况.
经过一些调查后发现,对于所有kCGImageDestinationLossyCompressionQuality
设置,1.0
Apple使用4:2:0 色度子采样(或色度抽取).这意味着对于YCrCb图像,它们仅针对每4个亮度(Y)像素采样一个色度像素(CrCb).换句话说,他们只使用原始图像中1/4的色度数据.对于1.0
Apple 的质量使用4:4:4色度子采样,这对于每个亮度像素都不是色度子采样或一个色度像素.这就是文件大小爆炸的原因,因为图像包含4x颜色数据与质量<= 0.99
.
那么,有没有人知道是否有办法使用CGImage(或任何其他API)关闭色度子采样的质量低于1.0
?
经过广泛的研究并遵循上面评论中的建议,似乎没有办法使用任何 Apple\xe2\x80\x99s 内置 API 来禁用色度子采样/抽取,除非设置kCGImageDestinationLossyCompressionQuality
为1.0
大的图像。
如果您在保存为 JPEG 时需要能够自己控制色度子采样/抽取,那么您\xe2\x80\x99 将需要使用第三方库,例如 libjpeg。
\n 归档时间: |
|
查看次数: |
5027 次 |
最近记录: |