我正在尝试从视频的几帧创建 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。