我想将png图像转换为gif。为此,我通过将其重新绘制到HTML画布中来读取该png图像中的每个像素数据。然后我从那个png图像数据中删除了alpha通道。最后,我将该像素阵列量化为256色调色板。 现在要构建gif图像,我现在要将每个像素映射到它在调色板中最接近的颜色。我比较了像素和调色板中每种颜色之间的欧几里德距离。这需要很长时间,而且我的Gif质量很差。将图像中的每个像素映射到gif调色板的最佳方法是什么?
答案 0 :(得分:0)
看看这个问题:
Calculate distance between colors in HSV space
在比较颜色时,HSV空间中的“距离”代表我们的眼睛测量为“距离”的更好。您可以尝试通过对颜色的色相,饱和度和值部分应用不同的权重来摆弄。 我们的眼睛具有20倍于亮/暗识别和颜色识别的接收器,因此尝试给予Value-part稍高的重量。
对于性能部分:您可以非常好地并行运行颜色近似操作,因为每个像素都独立于其他像素。
最后:256种颜色相当低,所以不要期望很好的图像质量。你将16.700.000种颜色减少到256只,记住这一点。