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 就不會出現之前的問題了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM