簡體   English   中英

使用 Imagemagick 將 eps 轉換為 png

[英]Convert eps to png using Imagemagick

我意識到已經發布了類似的問題,但它們似乎都沒有解決我的問題,而且我在 Imagemagick 的轉換手冊頁上沒有任何進展。 我有一個簡單的 EPS 圖像,我想將其轉換為 PNG。 只是為了完整起見,這里是 EPS 文件的前幾行——在這個例子中我稱之為 myfile.eps。

%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 5 5 305 305
%%BeginProlog
%%EndProlog

% Particle 14
160.631 121.588 6.99204 0 360 arc closepath
0 0 1 setrgbcolor fill

這是圖像本身: Encapsulated Postscript Image Example

該圖像由一組藍色圓圈組成。 我想將圖像從命令行轉換為具有相同圖像尺寸的 PNG。 當我使用這個命令時:

convert myfile.eps myfile.png

圖像最終出現在一個 612x792 像素的 PNG 文件的左下角,其他地方都有大量空白。

從 EPS 轉換的示例 PNG

接下來,我嘗試了 -crop、-resize 以及它們的各種組合,但這通常會給我很多單獨的 PNG 文件,這些文件顯示整個 612x792 圖像的一小部分。 我很確定 -crop 應該可以工作,但我顯然還沒有弄清楚如何正確指定裁剪尺寸。

轉換為PNG時保留圖像邊界框的技巧是什么?

在這種情況下,修剪圖像(去除邊緣周圍的空白)似乎很簡單:

magick image.eps -trim result.jpg

在此處輸入圖像描述

如果根據您的喜好將其修剪得太緊,您可以添加一個 10 像素寬的邊框,使其有空間呼吸,如下所示:

magick image.eps -trim -bordercolor white -border 10 result.jpg

如果您發現需要在其他情況下使用-crop ,那么您很可能在獲取大量 output 圖像時遇到問題,因為您沒有指定偏移量。 因此,例如,如果您想從西南角裁剪 150x120,請設置重力並使用+0+0的偏移量,如下所示:

magick image.eps -gravity southwest -crop 150x120+0+0 result.jpg

在此處輸入圖像描述


我還看到exiftool報告了一個邊界框,如下所示:

exiftool image.eps
ExifTool Version Number         : 12.00
File Name                       : image.eps
Directory                       : .
File Size                       : 25 kB
File Modification Date/Time     : 2021:05:04 07:58:44+01:00
File Access Date/Time           : 2021:05:04 08:00:11+01:00
File Inode Change Date/Time     : 2021:05:04 07:58:44+01:00
File Permissions                : rw-r--r--
File Type                       : EPS
File Type Extension             : eps
MIME Type                       : application/postscript
Bounding Box                    : 5 5 305 305                 <--- HERE
Image Height                    : 300
Image Width                     : 300
Image Size                      : 300x300
Megapixels                      : 0.090

這也給出了一個合理的結果:

magick image.eps -gravity southwest -crop 305x305+0+0 result.jpg

我不確定這些方法中的任何一種是否對您的所有圖像都是可靠的,因此您可能需要試驗並報告任何有問題的文件。 或者可能有更好的方法。


您可以使用awk從 EPS 中提取BoundingBox ,如下所示:

bbox=$(awk '/%%BoundingBox:/ {printf("%dx%d+%d+%d",$4,$5,$2,$3); exit }' image.eps)

然后像這樣使用它:

magick image.eps -gravity southwest -crop "$bbox"  result.jpg

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM