【问题标题】:Using parallel and Imagemagick to convert images to gif使用并行和 Imagemagick 将图像转换为 gif
【发布时间】:2018-04-20 06:34:09
【问题描述】:

我使用了一个 python 脚本,它使用数据文件生成图。现在由于数据量巨大,我正在获取 5000 范围内的图像,并且在顺序处理上使用 ImageMagick 的转换需要很多时间。

我提到了this 问题,其中 GNU Parallel 与 ImageMagick 一起使用。是否可以使用类似的代码制作gif?

我正在使用的将图像转换为 gif 的命令是:

convert -delay 0.2 -loop 0 slice_VOF2* slice_VOF.gif

提前致谢

Vishwesh

【问题讨论】:

  • 如果每个切片图像的颜色超过 256 种,那么 Imagemagick 将需要很长时间才能将每个切片图像量化为一组不同的 256 种颜色。您可以考虑使用通用颜色表图像和 Imagemagick 函数 -remap 将每个颜色处理为一组通用颜色。请参阅 imagemagick.org/Usage/quantize/#remap 并使用 -dither none 或 +dither。
  • 谢谢@fmw42。我的图像只有 256 种颜色,所以这应该不是问题。
  • 但每个 gif 可能有一组不同的 256 种颜色。也许一组常见的颜色会处理得更快。

标签: imagemagick imagemagick-convert gnu-parallel


【解决方案1】:

您所指的示例并行缩小单个图像。在将图像转换为 animgif 之前,准备好图像可能是个好主意。

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

然后你可以将图像分组转换成各自的animgif,最后将这些animgif组合起来:

ls slice_VOF2*.png | parallel -X convert {} {#}-animpart.gif
ls *-animpart.gif | sort -n | parallel -Xj1 convert {} anim.gif

【讨论】:

  • 这很好用,除了在聚合的第一步(带有 -X 的命令),我还必须有 -N50 或类似的东西,否则第一个处理器几乎会占用所有 png 文件。有没有办法让所有进程并行处理大约相等数量的文件?
猜你喜欢
  • 2014-03-17
  • 1970-01-01
  • 2014-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-12
  • 2014-07-23
  • 1970-01-01
相关资源
最近更新 更多