This question already has an answer here:
Convert an image to a 16bit color image
(1个答案)
去年关门了。
我试图获得一个分辨率为512px512px小于100kb的PNG图像。
目前文件大小约为350kb。我正在尝试减小文件的大小,我想的一个方法是减少颜色的深度。
这是PNG图像的信息:
每组件位数->8
每像素位数->32
我写了一些代码来创建每像素不同比特数的CGContext,但我不认为这是编写方法。
我不想使用UIImage.jpegData(compressionQuality:CGFloat),因为我需要维护alpha通道。
我已经在Objective-C中找到了一些代码,但这没有帮助。我在找一个快速的解决方案
(1个答案)
去年关门了。
我试图获得一个分辨率为512px512px小于100kb的PNG图像。
目前文件大小约为350kb。我正在尝试减小文件的大小,我想的一个方法是减少颜色的深度。
这是PNG图像的信息:
每组件位数->8
每像素位数->32
我写了一些代码来创建每像素不同比特数的CGContext,但我不认为这是编写方法。
我不想使用UIImage.jpegData(compressionQuality:CGFloat),因为我需要维护alpha通道。
我已经在Objective-C中找到了一些代码,但这没有帮助。我在找一个快速的解决方案
最佳答案
你需要以某种方式对原始图像进行抽取,例如将一些最低有效位归零或降低分辨率。然而,这完全违背了首先使用PNG的目的,PNG是用于无损图像压缩的。
如果你想要有损的图像压缩,其中抽取后PNG是一种方法,那么你应该使用JPEG,这使得更有效地利用位来再现心理视觉高度相似的图像。比你我想到的任何一个有损PNG的预处理步骤都更有效。
关于swift - 通过减少Swift中每像素的位数来压缩UIImage ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53288577/