將圖片格式轉成EPS格式

2020-08-17 09:05:40

背景

在使用LaTeX\LaTeX 對論文進行排版時,經常需要使用EPS格式的圖片,但是使用PPT或者Visio繪製的圖形無法直接導出成EPS格式的圖片,所以需要將pngjpg等格式的圖片轉換爲eps格式的圖片。

方法

總結網上的教學,大致分爲一下幾種方式:

  1. 線上轉換
  2. png>pdf>eps
  3. 使用Python程式碼實現:
  4. 使用bmeps命令

1.線上轉換

線上轉換推薦使用:http://www.tlhiv.org/rast2vec/,注意上傳檔案的檔名不能包含中文。另外線上轉換有一個缺點就是,轉換之後圖片上的有些字型會變。

2.png>pdf>eps方式

將圖片轉換爲pdf,然後使用Adobe Acrobat將pdf轉換成eps圖片。過程繁瑣,還得下載Adobe Acrobat。所以不推薦

3.使用Python程式碼實現

from PIL import Image
fig = Image.open("fig.png")
fig = fig.convert('RGB')#必須轉換成'RGB'模式才能 纔能儲存爲eps圖片
fig.save("fig.eps")
fig.close()

這個方法挺不錯,但是存在一個致命的問題。當輸入的圖片是無背景的圖片時,輸出的eps檔案會有問題,與轉換之前的圖片顯示不同。

4.使用bmeps命令(推薦)

在電腦安裝了TeX\TeXLive之後,在安裝目錄的\bin\win32目錄下會有一個bmeps.exe檔案。這個可執行檔案並不依賴於TeX\TeXLive。所以只需有bmeps.exe檔案就能使用bmeps命令(末尾有bmeps下載鏈接)。具體使用方法如下:

bmeps.exe -c fig.png fig.eps

還可以使用-h檢視幫助文件

bmeps.exe -h

bmeps [options] [ <inputfile> [ <outputfile> ] ]
      Options
      -------
      -p <pslevel>           select one of the following
         1                   (PS level 1)
         2                   (PS level 2 = default)
         3                   (PS level 3)
      -b                     BoundingBox file only
      -c                     turns color printing on
      -g                     turns color printing off (default)
      -e <encoding>          combine the follogin characters to specifiy
         8                   ASCII-85-encoding instead of ASCII-Hex
         r                   runlength encoding
         f                   flate encoding
      -t <filetype>          choose one of the following
         png
         jpg
         pnm
      -d                     draft mode only
         Draft mode means the program reads only header information
         from the bitmap file and prints a dummy image.
      -a <alphaoptions>
         o                   alpha channel is opacity, not transparency
         t                   alpha channel is transparency, not opacity
         l                   alternated transparency trigger level
         m                   mix foreground- and background color
         sd,d,d              specify background color i.e. s128,128,255
         PNG supports transparency channels, having values from
         0 ... 2^n-1. EPS supports simple yes/no decisions to mask
         pixels, so the alpha channels value must be mapped to
         "use pixel" or "mask pixel". The standard behaviour is
         to mask only pixels which have no opacity at all.
         The alternated trigger level uses only pixels having full
         opacity.
      -s                     print DSC comments
      -o                     use showpage operator
      -u                     undefine /pstr and /inputf, use
                             separated dictionary
      -r                     force garbage collection via "1 vmreclaim"
      -q                     use resolution information from the PNG file's
                             pHYs chunk (if available).

bmeps.exe檔案僅有230KB,而且不依賴TeX\TeXLive。所以推薦使用這種方法來轉換圖片。
最後附上bmeps.exe檔案下載鏈接:

https://drive.google.com/file/d/13r9yMXnc7VYpzE0Gsj2ZvKuCX2-WoIP8/view