【发布时间】:2017-09-20 03:30:16
【问题描述】:
是否可以在 Python 中将 256 色 gif 图像重新映射(例如)为 128 色或 64 色 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 谢谢。你能给我一些我可以使用的库的例子吗?
-
嗯,最受欢迎的之一(在开源世界中):ImageMagick。
-
为什么要压缩?
标签: python image image-processing