【问题标题】:PPM/PNG to GIF conversion results in very low qualityPPM/PNG 到 GIF 的转换导致质量非常低
【发布时间】:2015-11-23 23:00:52
【问题描述】:

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

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

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

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

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

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

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

补充说明:

  • 作为参考,这里有一些示例文件(original ppm file,ImageMagick gif,...):https://github.com/kleinfreund/raytracer/tree/master/assets
  • 通过 Photoshop 导出单个图像时质量非常好(选择性、100% 漫反射抖动、无透明度、256 色、无元数据)
  • 使用 ImageMagick 将 PPM 文件批量转换为 PNG 时,质量也非常好
  • 我对其他工作流程持开放态度,所以如果您也可以提供替代解决方案,我很好

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

【问题讨论】:

  • 对不起,我觉得你的问题很混乱。你是说当你使用 ImageMagick 将 PPM 转换为 GIF 时质量很差 - 如果是这样,请给我们你得到的 PPM 和 GIF。或者您是说当您将 多个 PPM 组合成一个 GIF 时,质量会很差 - 如果是这样,请给我们多个 PPM 和 GIF。我真的不明白 Photoshop 或 PNG 与它有什么关系。
  • @MarkSetchell 感谢您的反馈。我稍后会更新问题并提供相关的 ppm 文件。因此,目前转换为单个 GIF 文件已经很糟糕了。还没有谈论我想要制作的动画。另外,我提供 png 文件的原因是 ppm 文件不能那么容易显示。
  • @MarkSetchell 我在我们的存储库中添加了一些示例文件(包括 ppm 文件):github.com/kleinfreund/raytracer/blob/master/assets

标签: imagemagick gif imagemagick-convert


【解决方案1】:

其他选项

另一种选择可能是转换为 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格式吗?

【讨论】:

  • 我之前尝试将所有 PPM 文件转换为 PNG 并使用 convert ../gif/*.png ../test.gif 导致动画具有相同的“错误像素”(例如,第 6 帧具有相同的 错误 i> 像素,如问题所示)。也就是说,我不受我使用的格式的限制。因此,默认转换为 gif 并不能像 Photoshop 那样处理颜色减少。我可以做些什么让 ImageMagick 更接近 Photoshop 导出设置吗?
  • 所以-quantize RGB 的结果越来越好,但工件仍然太多。我得到的最接近的是使用ffmpeg -r 25 -i gif/%3d.png test-vid.mp4 -b:v 100000k -vcodec libx264 创建一个视频文件。不过,使用 Photoshop 的效果仍然最好。
  • 抱歉,我无法通过 ImageMagick 将您带到那里。 Anthony Thyssen 在 ImageMagick Usage 页面中进行了精彩的讨论...imagemagick.org/Usage/quantize
猜你喜欢
  • 2012-07-05
  • 2016-06-30
  • 1970-01-01
  • 2016-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-30
  • 1970-01-01
相关资源
最近更新 更多