我意识到已经发布了类似的问题,但这些问题似乎都没有解决我的问题,而且我对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
这是图像本身:封装Postscript图像示例
该图像由一组蓝色圆圈组成。我希望将图像从命令行转换为具有相同图像维度的PNG。当我使用这个命令时:
convert myfile.eps myfile.png
图像在PNG文件的左下角结束,该文件为612x792像素,其他任何地方都有大量的空白。
接下来,我尝试了-crop、-resize和各种组合,但是这通常会给我很多单独的PNG文件,这些文件显示了整个612x792图像的小部分。我很确定-crop应该能工作,但我显然还没有弄清楚如何正确地指定作物尺寸。
当图像转换为PNG时,保留图像边界框的诀窍是什么?
发布于 2021-05-04 07:04:57
在这种情况下,微调图像(删除边缘周围的空白)似乎可以很简单地完成您想做的事情:
magick image.eps -trim result.jpg
如果剪裁得太近,您可以在后面加上一个10像素宽的边框,这样就有空间呼吸了:
magick image.eps -trim -bordercolor white -border 10 result.jpg
如果您发现需要在其他情况下使用-crop
,则很可能在获取大量输出图像时遇到问题,因为您没有指定偏移量。因此,例如,如果您想从西南角裁剪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
我不确定这些方法是否对所有映像都是可靠的,所以您可能需要对任何有问题的文件进行实验和报告。或者有一种更好的方法。
您可以使用这样的BoundingBox
从EPS中提取awk
:
bbox=$(awk '/%%BoundingBox:/ {printf("%dx%d+%d+%d",$4,$5,$2,$3); exit }' image.eps)
然后像这样使用它:
magick image.eps -gravity southwest -crop "$bbox" result.jpg
https://stackoverflow.com/questions/67373172
复制相似问题