首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Imagemagick将eps转换为png

使用Imagemagick将eps转换为png
EN

Stack Overflow用户
提问于 2021-05-03 17:24:54
回答 1查看 1.7K关注 0票数 4

我意识到已经发布了类似的问题,但这些问题似乎都没有解决我的问题,而且我对Imagemagick的转换手册页面没有任何进展。我有一个简单的EPS图像,我想转换成PNG。为了完整起见,下面是EPS文件的前几行--我在本例中称它为myfile.eps。

代码语言:javascript
运行
复制
%!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。当我使用这个命令时:

代码语言:javascript
运行
复制
convert myfile.eps myfile.png

图像在PNG文件的左下角结束,该文件为612x792像素,其他任何地方都有大量的空白。

从EPS转换而来的PNG示例

接下来,我尝试了-crop、-resize和各种组合,但是这通常会给我很多单独的PNG文件,这些文件显示了整个612x792图像的小部分。我很确定-crop应该能工作,但我显然还没有弄清楚如何正确地指定作物尺寸。

当图像转换为PNG时,保留图像边界框的诀窍是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-04 07:04:57

在这种情况下,微调图像(删除边缘周围的空白)似乎可以很简单地完成您想做的事情:

代码语言:javascript
运行
复制
magick image.eps -trim result.jpg

如果剪裁得太近,您可以在后面加上一个10像素宽的边框,这样就有空间呼吸了:

代码语言:javascript
运行
复制
magick image.eps -trim -bordercolor white -border 10 result.jpg

如果您发现需要在其他情况下使用-crop,则很可能在获取大量输出图像时遇到问题,因为您没有指定偏移量。因此,例如,如果您想从西南角裁剪150x120,设置重力并使用+0+0的偏移量,如下所示:

代码语言:javascript
运行
复制
magick image.eps -gravity southwest -crop 150x120+0+0 result.jpg

我还看到,exiftool报告一个边框如下:

代码语言:javascript
运行
复制
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

这也带来了一个合理的结果:

代码语言:javascript
运行
复制
magick image.eps -gravity southwest -crop 305x305+0+0 result.jpg

我不确定这些方法是否对所有映像都是可靠的,所以您可能需要对任何有问题的文件进行实验和报告。或者有一种更好的方法。

您可以使用这样的BoundingBox从EPS中提取awk

代码语言:javascript
运行
复制
bbox=$(awk '/%%BoundingBox:/ {printf("%dx%d+%d+%d",$4,$5,$2,$3); exit }' image.eps)

然后像这样使用它:

代码语言:javascript
运行
复制
magick image.eps -gravity southwest -crop "$bbox"  result.jpg
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67373172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档