![](/img/trans.png)
[英]How to add padding when using imagemagick to convert an EPS into a 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 文件的左下角,其他地方都有大量空白。
接下來,我嘗試了 -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.