更改.gif图像中每个像素的颜色数量?
问题描述:
是否有可能在Python中将256色gif图像重新映射为128色或64色gif图像?更改.gif图像中每个像素的颜色数量?
我想它使用的ImageIO库
import imageio
def myfunction(inputgif, outputgif, duration):
gifimage = imageio.mimread(inputgif)
for i in range(len(gifimage)):
gifimage[i] = gifimage[i]/4
with imageio.get_writer(outputgif, mode='I', duration=duration) as writer:
for x in range(len(gifimage)):
writer.append_data(gifimage[x])
writer.close()
它的工作,但是,问题是图像文件仍然认为“他的宇宙”是色256个可能的值(从0到255) ,而不是从0到64(因为我把所有的值除以4)。这使图像变得更暗,而不是使用64(4位)可能的颜色。
我的目标是通过减少颜色数量来获得有损数据压缩。
你知道吗,一种理智的方法将使用某种向量量化(优化保留的颜色)和自定义颜色调色板(仅使用以前计算的颜色)?这与你的代码非常不同!我不知道你用什么方法期待什么(它在一些空间中进行线性颜色转换;根据你的期望远离有损耗)。可能有许多库正在做这件事,但是用python自己实现这一切可能是一些工作。 – sascha
@sascha谢谢。你能给我一些关于我可以使用的图书馆的例子吗? – Madno
那么,最流行的一个(在开源世界):[ImageMagick](http://www.imagemagick.org/Usage/quantize/)。 – sascha