使用并行和Imagemagick将图像转换为gif

4
我使用了一个Python脚本生成数据文件的图表。现在由于数据量很大,我得到的图像范围为5000,并且在顺序处理中使用ImageMagick的convert需要很长时间。
我参考了this问题,在其中使用了GNU Parallel和ImageMagick。是否可以使用类似的代码制作gif?
我正在使用将图像转换为gif的命令是: convert -delay 0.2 -loop 0 slice_VOF2* slice_VOF.gif 提前感谢
Vishwesh

如果您的每个切片图像都有超过256种颜色,则Imagemagick将花费很长时间将每个图像量化为不同的256种颜色集。您可以考虑使用一个公共的调色板图像和Imagemagick函数-remap来处理每个图像到一个共同的颜色集。请参见https://www.imagemagick.org/Usage/quantize/#remap并使用-dither none或+dither。 - fmw42
谢谢@fmw42。我的图像只有256种颜色,所以这不应该是一个问题。 - Vishwesh
但是每个 GIF 可能有不同的 256 种颜色。也许使用一组共同的颜色会更快处理。 - fmw42
1个回答

2

您所提及的示例会并行地对单个图像进行缩小处理。最好在将其转换为动画 GIF 之前,预先准备好图像,使其具有正确的尺寸。

parallel convert {} -resize 640x480 {.}.png ::: slice_VOF2*jpg

然后,您可以将图像分组转换为各自的animgif,最后将这些animgifs合并:
ls slice_VOF2*.png | parallel -X convert {} {#}-animpart.gif
ls *-animpart.gif | sort -n | parallel -Xj1 convert {} anim.gif

1
这个方案很好,除了聚合的第一步(带有-X命令)之外,我还必须加上-N50或类似的东西,否则第一个处理器几乎会处理所有的png文件。有没有办法让并行处理过程中每个进程处理大致相等数量的文件? - yosukesabai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接