Imagemagick 缩小大EPS图片的比例,不产生尖锐的结果,并使用剪切路径

Imagemagick 缩小大EPS图片的比例,不产生尖锐的结果,并使用剪切路径,imagemagick,scale,clipping,eps,Imagemagick,Scale,Clipping,Eps,我得到了一个EPS文件(3854x8000),我想缩小它,因为这是一种很大的方式,但不会丢失剪切路径。(如果可能的话-- 我尝试使用ImageMagick缩小它: convert picture.eps -resize 768x1024 picture_small.eps 结果是紧张的。直到现在我还没有尝试保持剪辑路径,因为我不知道如何 到目前为止,如果没有找到任何解决这个问题的方法 ImageMagick真的能做到这一点吗 澄清: /opt/ghostscript-9.15-linux-x8

我得到了一个EPS文件(3854x8000),我想缩小它,因为这是一种很大的方式,但不会丢失剪切路径。(如果可能的话-- 我尝试使用ImageMagick缩小它:

convert picture.eps -resize 768x1024 picture_small.eps
结果是紧张的。直到现在我还没有尝试保持剪辑路径,因为我不知道如何

到目前为止,如果没有找到任何解决这个问题的方法

ImageMagick真的能做到这一点吗

澄清:

/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
(由Alex编辑-因为我是mht的一名同事,正在处理同一问题)

EPS文件-以及JPG可以包含剪切路径(德语:Freistellungspfad)。这是一个矢量路径,通常围绕光栅图像,指定应剪切背景的哪一部分。使用ImageMagick,剪切路径显示在
identifite-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>
convert -density 300 picture.eps -resize 768x1024 picture_small.eps
以及:


在读取文件之前,请尝试设置密度,如下所示:

   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>
convert -density 300 picture.eps -resize 768x1024 picture_small.eps
你没有说为什么你的EPS“太大了”。是因为尺寸太大,还是因为文件太大


要决定缩小EPS文件的最佳方法,必须知道所包含的PostScript代码的确切性质

EPS可以包含在页面上呈现的两种不同类型的图形元素:

  • 基于矢量的元素(包括显示文本的字体)
  • 基于光栅的元素(也称为“像素图像”)
  • 有些EPS纯粹基于这两种内容中的一种,有些EPS混合了这两种内容

    如果您确信您的EPS是纯光栅数据,则ImageMagick转换不会造成任何损害

    但请注意:ImageMagick本身无法直接处理EPS(或PostScript或PDF)。它调用外部“委托”来处理这些输入类型。此委托是Ghostscript

    然后,Ghostscript将EPS(或PS或PDF)输入转换为大光栅图像,覆盖整个页面(如果输入是PostScript或PDF,则多个页面包含多个图像,如果多个页面包含多个页面)

    在此之后:你的矢量数据和字体都消失了

    然后ImageMagick获取Ghostscript创建的光栅图像,并对其应用自己的处理:下采样、着色等——通过ImageMagick命令行请求的任何内容

    如果您想再次将EPS作为输出,ImageMagick无法重新创建矢量形状。EPS中的所有内容现在都将被像素化,包括字体。EPS将只是一个小而薄的PostScript包装,围绕一整页光栅图像

    使用ImageMagick,您可能会遇到最糟糕的情况

    • 一个比纯矢量原始文件大得多的文件
    • 由于像素化,质量下降,同时丢失了所有矢量和字体
    因此,您可以自己运行Ghostscript,而不依赖ImageMagick,这可能会带来一些好处:

    convert picture.eps -resize 768x1024 picture_small.eps
    
    • 您有更多的命令行参数可用于微调输出。(ImageMagick在此阶段仅知道要传递给Ghostscript的分辨率请求,使用
      -density NNN

    • 您可以选择不同的输出格式,这取决于您希望从初始EPS创建的输出EPS的最终用途。也许应该将其放入Word、LaTeX或Libre/OpenOffice文档中作为插图?是否只需打印?是否将其转换为PNG或JPEG

      • 您甚至可以再次请求EPS(在最新版本中使用参数
        -sDEVICE=eps2write
        运行它)。这可以将(大多数)矢量元素(包括字体)从原始文件保留到输出EPS中
      • 您可以请求PDF输出(使用
        -sDEVICE=pdfwrite
        运行)。这还保留了矢量和字体。它可以用于直接包含到LaTeX文档中(无需先转换为图像)
    因此,这一切都取决于您转换的最终目的,以及如何以最合适的方式进行转换。如果我知道您的目标,我可以为您提供更具体的Ghostscript命令行建议


    更新:

    /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
    
    在快速查看新提供的样本EPS(参见OP的“澄清”部分)后,我可以陈述以下内容:

  • 所谓的“EPS”文件是使用Adobe Photoshop创建的
  • 它由各种块组成:
    • 开头的一块无法识别的垃圾字节(
      64400字节
    • 一个真正的EPS文件,从字节偏移量64400后开始,由以下内容组成:
    • 13行PostScript标题
    • 156行,包含较小的嵌入式预览图像(
      4874字节
    • 包含十六进制编码ICC配置文件的100行(
      6749字节
    • Photoshop大约300行XML元数据(
      18746字节
    • 大约7200行图像光栅数据,最有可能是TIFF(
      475213字节
  • OP poster(以及问题的劫持者)将这个不太标准的EPS文件转换为另一种图像格式(或“较小”的EPS)的所有尝试似乎都失败了,因为相应的过程使用了嵌入的240x240像素预览图像,而不是嵌入的主TIFF

    在任何情况下,这个所谓的EPS文件的创建者都应该预订“Photoshop和图形格式培训课程”或类似课程

    因为如果您创建一个包含向量路径的简单黑色三角形的EPS文件(可以用不到20行代码(包含不到200字节)来描述和保存),然后将其另存为
    500+kB
    TIFF以再次将其包装到EPS中,那么您就做错了…


    更新2:

    /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
    
    我请一位朋友打开Adobe Photoshop CC安装的文件,放大三角形,截屏他看到的东西,然后把照片发给我。他做到了。放大