ImageMagick:如何限制颜色和抖动

ImageMagick:如何限制颜色和抖动

我正在尝试从视频的几帧创建 GIF 动画。我希望通过限制颜色使结果变小,但没有条纹。

因此,我脑海中想到的是读取文件,然后减少颜色,然后抖动。在阅读了 ImageMagick 网站上的大量操作理论后,我想出了以下命令行:

convert -size 640x640 -colors 64 *.png -ordered-dither o8x8,8,8,4 +map \
  -layers Optimize output.gif

这些文件是使用如下方式.png从视频生成的:ffmpeg

ffmpeg -i source.mp4 -ss 10:01.123 -to 10:03.321 frames/source_%03d.png

不过,我不太清楚该把这个-colors 64子句放在哪里。我应该把它放在*.jpg部分之前还是之后?或者甚至放在-ordered-dither o8x8,8,8,4部分之后?

感谢您的帮助。我对 ImageMagick 还很陌生,所以请多多包涵 :-)


更新 1:

因此,我尝试了一下并得到了这些(对我来说)非直观的结果:

-delay 12 -colors 128 *.png -resize 640x640 -ordered-dither o8x8,8 -deconstruct +map \
  -layers Optimize output_1.gif
Result: 3.09 MB, Good quality

-delay 12 *.png -colors 128 -resize 640x640 -ordered-dither o8x8,8 -deconstruct +map \
  -layers Optimize output_2.gif
Result: 3.09 MB, Good quality

-delay 12 *.png -resize 640x640 -colors 128 -ordered-dither o8x8,8 -deconstruct +map \
  -layers Optimize output_3.gif
Result: 4.41 MB, Degraded quality

-delay 12 *.png -resize 640x640 -ordered-dither o8x8,8 -colors 128 -deconstruct +map \
  -layers Optimize output_4.gif
Result: 2.77 MB, Good quality

-delay 12 <individual .png followed by -colors 128 each> -resize 640x640 \
  -ordered-dither o8x8,8 -colors 128 -deconstruct +map -layers Optimize output_5.gif
Result: 3.09 MB, Slightly Better quality

简而言之:除 #3 组合外,所有组合均可产生非常好的质量,而 #3 组合不仅产生了明显退化的结果,而且质量也是最大的。

这真是出乎意料……你怎么看:结果怎么会如此大相径庭?

答案1

查看 ImageMagick 手册这里

命令行的剖析

ImageMagick 命令行包括:

一个或多个所需的输入文件名。

零个、一个或多个图像设置。

零个、一个或多个图像运算符。

零个、一个或多个图像序列运算符。

零个、一个或多个图像堆栈。

零个或一个输出图像文件名(转换、复合、蒙太奇、比较、导入、召唤所需)。

您可以在后面的章节中找到命令行每个组成部分的详细解释。

我不知道这是否很重要,但这意味着你会将其构建为如下形式:

convert  *.png -size 640x640 -colors 64 -ordered-dither o8x8,8,8,4 +map -layers optimize output.gif

我测试了这个命令并且它运行良好,将 4x PNG 文件@每个 6-7MB 转换为 5.2MB 的 GIF。

相关内容