PPM/PNG 到 GIF 的转换导致质量非常低

PPM/PNG to GIF conversion results in very low quality

我们正在编写的光线追踪器生成简单的 PPM 图像文件。我们写了一些为我们生成场景定义的东西,这样我们就可以用这些文件创建动画。

最初的工作流程是通过文件 > 脚本 > 将文件加载到堆栈 在 Photoshop 中打开所有文件,并将结果导出为 gif。这很好用,尽管工作流程很坎坷。质量很好,文件很大。

现在,当使用 ImageMagick 将 PPM 转换为 GIF 时,生成的图像质量非常糟糕。也就是说,ImageMagick制作的个GIF文件质量已经很差了。将它们组合成 GIF 当然不会改变这一点。

原始文件(用 Photoshop 保存为 PNG):

GIF(使用 ImageMagick 从 PPM 转换而来):

(特别注意发光点周围的斑点)

我刚刚使用了 mogrify -path ../gif -format gif 006.ppm 作为结果。我真的不知道从哪里开始调整它(尽管我尝试了 reference 中的几个选项)。

进一步说明:

(两个文件之间差异的小动画,以便更容易看出问题。作者:Mark Setchell)

其他选项

另一种选择可能是转换为 MPG 格式,如下所示:

convert -delay 1 a-*png m2v:movie.mpg

convert -delay 1 a-*ppm m2v:movie.mpg

更新答案

我明白了 - 您必须为动画使用 GIF,所以 PNG 不是一个选项。也许您可以在不同的色彩空间中进行量化,例如Lab 色彩空间像这样:

convert orig.ppm -quantize Lab -colors 256 result.gif

其他选项可能是 YUVRGB - 您可以使用

获得所有选项的列表
identify -list colorspace

原答案

问题是您的 PPM 文件包含的颜色多于 GIF 格式可以包含的颜色。您可以这样计算使用的颜色:

convert orig.ppm -print "%k\n" null:
642

这表明您的图片有 642 种颜色。

GIF 格式只允许 256 色的调色板 - reference。可以改用 PNG 格式吗?