Linux系统使用convert将大量的图片合成.gif

1.将图片合成.gif

ubuntu中可以用convert命令对图像的格式和大小等进行转换(convert命令可以用在脚本中),但是convert不是ubuntu自带的命令,需要先安装ImageMagick,之后才可以使用。

安装ImageMagick:

sudo  apt-get install imagemagick

测试是否安装成功,首先查看版本,命令:

convert -version

如果看到下面的信息,则说明安装成功:

1 Version: ImageMagick 6.7.7-10 2014-03-06 Q16 http://www.imagemagick.org
2 Copyright: Copyright (C) 1999-2012 ImageMagick Studio LLC
3 Features: OpenMP

利用ubantu系统里的的convert导出.gif动图,在存放图片的文件夹里面打开终端,输入命令:

/usr/bin/convert -quality 90% frames*.png movie.gif

便可以将名字为frames*的图片导出为movie.gif动图了。

2.生成动图时出现问题:

convert-im6.q16: cache resources exhausted `three-view.gif' @ error/cache.c/OpenPixelCache/4083.
convert-im6.q16: memory allocation failed `three-view.gif' @ error/quantize.c/AssignImageColors/496.

问题的原因是Ubuntu系统分配给ImageMagick的Memory不够

通过执行 identify -list resource 后输出的内容可以发现,ImageMagick的Memory只有256MiB:

Resource limits:
  Width: 16KP
  Height: 16KP
  List length: 18.446744EP
  Area: 128MP
  Memory: 256MiB
  Map: 512MiB
  Disk: 1GiB
  File: 768
  Thread: 8
  Throttle: 0
  Time: unlimited

我们需要在policy.xml文件中修改这个限制。

首先通过 convert -list policy 命令找到policy.xml文件所在的路径:

Path: /etc/ImageMagick-6/policy.xml      ####这个就是policy.xml文件所在的路径
  Policy: Resource
    name: disk
    value: 1GiB
    ......

然后执行 sudo vim /etc/ImageMagick-6/policy.xml ,在找到下面几行:

  <policy domain="resource" name="memory" value="256MiB"/>    ####将这里的256修改大一点,比如2048
  <policy domain="resource" name="map" value="512MiB"/>
  <policy domain="resource" name="width" value="16KP"/>
  <policy domain="resource" name="height" value="16KP"/>
  <!-- <policy domain="resource" name="list-length" value="128"/> -->
  <policy domain="resource" name="area" value="128MB"/>
  <policy domain="resource" name="disk" value="1GiB"/>

保存后,再次执行 identify -list resource ,就会显示memory变为了2GiB了:

Resource limits:
  Width: 16KP
  Height: 16KP
  List length: 18.446744EP
  Area: 128MP
  Memory: 2GiB    ####变成了2GiB了
  Map: 512MiB
  Disk: 1GiB
  File: 768
  Thread: 8
  Throttle: 0
  Time: unlimited

后面再执行 convert -quality 90% frames*.png movie.gif 就不会出现之前的问题了。

posted @ 2021-11-15 15:11  希望先生  阅读(1431)  评论(0编辑  收藏  举报