通过减少Swift中每像素的位数来压缩UIImage

时间:2018-11-13 19:57:33

标签: swift uiimage compression png

我正在尝试获取分辨率小于100 kB的512px x 512px的PNG图片。
目前,文件大小约为350 kB。我正在尝试减小文件大小,而我正在考虑的一种方法是减小颜色深度。

这是PNG图片的信息:

  每个组件

位-> 8   
每像素位数-> 32   

我编写了一些代码来创建CGContext,每个像素的位数不同,但是我认为这不是写方法。
我不想使用 UIImage.jpegData(compressionQuality:CGFloat),因为我需要维护Alpha通道。
我已经在Objective-C中找到了一些代码,但是没有用。
我正在 Swift

中寻找解决方案

1 个答案:

答案 0 :(得分:1)

您需要以某种方式抽取原始图像,例如将一些最低有效位清零或降低分辨率。但是,这完全破坏了首先使用PNG的目的,该目的是用于无损图像压缩。

如果要进行有损图像压缩(在这种方法中先进行PNG抽取,然后进行PNG抽取),则应改用JPEG,它可以更有效地利用这些位来重现心理视觉上高度相似的图像。作为PNG的有损预处理步骤,它比您或我想出的任何方法都要高效。