1. 程式人生 > >使用ImageMagick將eps批量匯出為透明png圖片

使用ImageMagick將eps批量匯出為透明png圖片

一、前言

  1. 後文的解釋比較囉嗦,這裡先上總結論:下載magick軟體,在命令列使用下述兩行程式碼:
    mogrify -density 120 -format png *.eps
    mogrify -transparent white *.png

    可以將工作目錄下的所有eps匯出為png圖片,並且將白色背景變成透明背景。
  2. ImageMagick (TM) 是一個免費的建立、編輯、合成圖片的軟體,其大多數功能的使用都來源於命令列工具。在python2還有對應的庫PythonMagick。參考資料:
    ImageMagick官網
    中文官網
    中文教程

二、使用convert處理單張圖片

  1. 下載測試檔案a.eps
  2. convert基本用法
    Markdown
  3. 可以設定-density引數,控制輸出的解析度,這裡-density的單位與illustrator匯出png的ppi相同,預設值為72。為了防止圖片太小,這裡進行一定的放大,設成120:convert -density 120 a.eps a.png,輸出的a.png原尺寸為132×26的話,現在放大120/72,變為220×43。注意這裡的引數呼叫順序,-density 120不能放到a.eps後面。
  4. 接上一步,使用-transparent white可以把白色背景變透明:convert -transparent white a.png a.png
  5. 如果要批量將eps轉為png,convert的匯出名稱規則是採用數字自動編號,無法維持原檔名。使用*作為匯出萬用字元會報錯,只能使用%02d等數字格式。例如:
    Markdown

三、改用mogrify命令批量處理圖片

  1. 所以批量處理的時候,推薦用功能類似的mogrify代替convert,其與convert的主要區別是用於原地操作。
    因為windows自帶一個C:\Windows\System32\convert.exe工具,這也是為了防止呼叫名稱衝突。
  2. 替換單張圖片的語法,結合-format引數:mogrify -density 120 -format png a.eps,注意千萬千萬不要用mogrify -density 120 a.eps a.png
    ,這不僅不會生成a.png,還會破壞原始a.eps檔案,把向量圖變成點陣圖。
  3. 批量把eps替換為png,且把白色背景換成透明背景的程式碼:
    mogrify -density 120 -format png *.eps
    mogrify -transparent white *.png
  4. 使用自定義顏色,用雙引號包起rgb值即可:

    mogrify -transparent "rgb(255,255,255)" *.png