我有一个EPS文件(3854x8000),我想缩小它,因为这是大的,但不会丢失剪切路径。 (如果有可能 - 我尝试使用ImageMagick缩小它:
convert picture.eps -resize 768x1024 picture_small.eps
结果很糟糕。到目前为止,我还没有尝试保留剪切路径,因为我不知道如何。
到目前为止,如果没有找到解决此问题的任何方法。
ImageMagick可以实际执行此操作吗?
澄清:
(由Alex编辑 - 因为我是同一个问题的合作伙伴)
EPS文件 - 以及JPG可以包含剪切路径(德语:Freistellungspfad)。这是一个通常围绕光栅图像的矢量路径,指定应剪切背景的哪个部分。使用ImageMagick,剪切路径显示在identify -verbose
的输出中,如下所示:
Clipping path:
<?xml version="1.0" encoding="iso-8859-1"?>
<svg width="240" height="240">
<g>
<path style="fill:#00000000;stroke:#00000000;stroke-width:0;stroke-antialiasing:false" d="
M 53,133
L 126,63
L 151,163
"/>
</g>
</svg>
到目前为止已经尝试过:
/opt/ghostscript-9.15-linux-x86_64/gs-915-linux_x86_64
-dSAFER -dBATCH -dNOPAUSE -dNOPROMPT
-dMaxBitmap=500000000
-r144 -sDEVICE=eps2write
-sOUTPUTFILE=out.eps
dreieck_rgb_pfad2_photoshop.eps
和
convert dreieck_rgb_pfad2_photoshop.eps -clip eps3:out.eps
答案 0 :(得分:2)
你没说出为什么你的EPS太大了#39;它只是尺寸,还是文件大小?
要确定缩小EPS文件的最佳方法,必须知道所包含的PostScript代码的确切性质。
EPS可以包含在页面上呈现的两种不同类型的图形元素:
某些EPS仅基于这两种类型的内容之一,其中一些包含两者之间的混合。
如果您确定您的EPS是纯粹的栅格数据,那么ImageMagick转换不会造成任何伤害。
但要注意:ImageMagick无法直接处理EPS(也不是PostScript或PDF)。它调用外部&#39; delegate&#39; 来处理这些输入类型。这个代表是Ghostscript。
Ghostscript然后将EPS(或PS或PDF)输入转换为大光栅图像,覆盖整个页面(如果输入为PostScript或PDF超过1页,则为多个页面的多个图像)。
在此之后:你的矢量数据和字体消失了!
然后ImageMagick获取Ghostscript创建的光栅图像并对其应用自己的处理:下采样,着色等 - 无论您通过ImageMagick命令行请求什么。
如果您想再次将EPS作为输出,ImageMagick将无法重新创建矢量形状。 EPS中的所有内容现在都将按像素化,包括字体。 EPS只是一个围绕整页光栅图像的小而薄的PostScript包装。
使用ImageMagick,你
因此,自己运行Ghostscript可能会带来一些好处,而不是依赖于ImageMagick:
您可以使用更多命令行参数来微调输出。 (此阶段的ImageMagick只知道使用-density NNN
传递给Ghostscript的解析请求。)
您可以选择不同的输出格式,具体取决于您想要从初始EPS创建的输出EPS的最终目的。也许它应该作为插图进入Word或LaTeX或Libre / OpenOffice文档?想简单打印吗?想将其转换为PNG或JPEG格式吗?
-sDEVICE=eps2write
运行它)。这可以保留(大多数)矢量元素,包括字体,从原始文件到输出EPS。-sDEVICE=pdfwrite
运行)。这也保留了矢量和字体。它可以直接包含在LaTeX文档中(无需先转换为图像)。所以这完全取决于转换的最终目的,如何以最合适的方式进行转换。我可以给你更具体的Ghostscript命令行建议,我会知道你的目标。
<强>更新强>
快速提供新提供的样本EPS(参见&#34; Clarification&#34; OP部分),我可以说明以下内容:
64400 Bytes
)4874 Bytes
)6749 Bytes
)18746 Bytes
)475213 Bytes
)看起来OP海报(以及问题的劫持者)的所有尝试都将这个不那么标准的EPS文件转换为另一种图像格式(或者#34;较小的&#34 ; EPS)失败,因为相应的过程使用嵌入的240x240像素预览图像而不是嵌入的主TIFF。
在任何情况下,看起来这个所谓的EPS文件的创建者应该预订&nbsp; Photoshop和Graphic Formats培训课程&#39; 或类似的。
因为如果您使用由 vector 路径组成的简单黑色三角形创建EPS文件(可以在少于20行代码中描述和保存,其中包含少于200个字节!)然后将其保存为500+ kB
TIFF以将其再次包装到EPS中,你做错了......
更新2:
我问了一位能够访问Adobe Photoshop CC安装的朋友打开文件,放大三角形,对他看到的内容进行屏幕截图并将镜头发送给我。他做到了。缩放级别为500%。
这是:
正如您可以清楚地看到的,即使是Photoshop的原始文件也是#34; edgily&#34;。并且绝不是3854x8000像素,作为OP的第一句话。
如果EPS实际上并不包含三角形图示的矢量表示,则无法避免这种情况&#34; edgily&#34;缩放它的结果......
更新3:
为了证明我的观点,你可以在几十行和几百字节中有一个基于矢量的EPS文件,这里是:
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Kurt Pfeifle (manually)
%%CreationDate: Wed Mar 25, 2015 (16:30 h)
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 2
% %%BoundingBox: 42 61 121 142
%%BoundingBox: 0 0 240 240
%%EndComments
%%BeginProlog
%%EndProlog
%%BeginSetup
%%EndSetup
%%Page: 1 1
%%BeginPageSetup
%%EndPageSetup
gsave
42 61 79 81 rectclip
gsave
0 setgray
42.4 85.6 moveto
100.8 141.6 lineto
120.8 61.6 lineto
closepath
42.4 85.6 moveto
eofill
grestore
grestore
showpage
%EOF
(您可以轻松评论/删除%%BoundingBox:
设置的两个替代行...)
答案 1 :(得分:1)
尝试在读取文件之前设置密度,如下所示:
convert -density 300 picture.eps -resize 768x1024 picture_small.eps