通过 ImageMagick 或 GhostScript 命令行旋转 .EPS 文件

Posted

技术标签:

【中文标题】通过 ImageMagick 或 GhostScript 命令行旋转 .EPS 文件【英文标题】:.EPS file rotation via ImageMagick or GhostScript command line 【发布时间】:2016-10-20 15:24:12 【问题描述】:

我想使用 imagemagick 或 GhostScript 命令行旋转 .eps 文件。我已成功旋转.tif/.tiff 文件,但无法旋转.eps 文件。

我尝试了什么?

使用 ImagicMagick

我尝试了以下命令。

/usr/bin/convert /usr/local/1476864737b31068.eps -rotate 90 /usr/local/1476864737b31068.eps

结果:-

整个 eps 文件变黑,文件中没有内容。文件大小也从 1.3MB 增加到 3.3MB

使用 GhostScript

我尝试了以下命令。

gs -c '612 0 translate 90 rotate' -f /usr/local/1476864737b31068.eps
gs -dEPSCrop -c "<</Orientation 1>> setpagedevice" -f input.eps -c quit
gs -dEPSCrop -sOutputFile=/usr/local/1476864737b31068.eps -c "<</Orientation 1>> setpagedevice" -f /usr/local/1476864737b31068.eps -c quit
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=eps2write -sOutputFile=/usr/local/1476864737b31068.eps -c "<</Orientation 3>> setpagedevice" -f /usr/local/1476864737b31068.eps

结果:-

没有命令旋转,最后一个命令,整个 eps 文件变成白色,但文件中有注释。文件大小也从 1.3MB 减少到 166KB

Sample .EPS FILE

注意:我正在尝试旋转源 (.eps) 文件,我不需要旋转输出文件,如 JPG、PNG 等文件。

【问题讨论】:

如果不查看示例 EPS 程序并且知道您正在使用的 Ghostscript 版本,它可能无法为您提供帮助。解决这个问题的简单方法是使用 EPS 的 BoundingBox 设置媒体,旋转必要的量,然后添加旋转和平移操作来进行实际操作。输出到 eps2write 设备以获取新的 EPS 程序。 EPS 实际上是为了被插入到一个封闭的 PostScirpt 程序中,所以这应该很容易实现。 @KenS 你能告诉我如何查看安装的 gs 版本吗? 我使用的是 Ubuntu 16.04 我的意思是 Ghostscript 版本。键入 gs --help,或查看您发布的任何 Ghostscript 命令行的后台通道,gs 始终在标准输出上声明其版本。 @KenS Its Ghostscript 9.18 (2015-10-05) 我还在我的问题中添加了示例文件链接。 【参考方案1】:

所以你没有说你希望文件以哪种方式旋转,也没有说多少。

这个命令行:

gs -sDEVICE=eps2write -sOutputFile=out.eps -c "<</PageSize [569 944]>>setpagedevice 569 0 translate 90 rotate" -f 1476864737b31068.eps

创建一个相对于原始文件逆时针旋转 90 度的新 EPS 文件。显然,如果要旋转不同的量,则需要更改 translate 和 rotate 操作数。

当然,EPS 文件应包含在封闭的 PostScript 程序中,因此通常在其中执行缩放和旋转。

最后说明;这不仅仅是“旋转 EPS”,-c 和 -f 之间的代码就是这样做的。它的作用是将 EPS 解释为图形基元,将这些基元传递给设备,然后组装一个包含这些基元的适当表示的新输出文件。

因此生成的 EPS 文件的内容与原始 EPS 文件的内容完全不同

顺便说一下,您可能需要考虑使用不同的文件共享服务。那个人在让我下载文件之前尝试下载浏览器扩展程序(视频下载帮助程序),当我拒绝时,他将我重定向到另一个(广告)站点,该站点试图安装恶意软件....

【讨论】:

我有更新文件主机,现在请尝试下载这个文件。 用你的命令,结果还是一样,我需要安装任何额外的模块吗? 还有一件事,我正在通过 php 执行这个命令,但是当我在终端中运行你的命令时,它要求我按 ENTER 继续。 我确实已经下载了该文件,我只是惊讶地发现我的病毒扫描程序声称是恶意软件。你的文件,使用我发布的命令,对我来说很好。您的 Ubuntu 设置可能有一些奇怪的地方,已知打包程序会对 Ghostscript 进行更改。您如何验证“结果相同”?关于不提示按键,我可以建议您阅读文档吗? 谢谢您,先生,我刚刚在命令中添加了-dSAFER -dBATCH -dNOPAUSE 以使其免费按“返回”。你的命令现在对我有用,我想在我尝试你的命令之前一定有一些路径问题。

以上是关于通过 ImageMagick 或 GhostScript 命令行旋转 .EPS 文件的主要内容,如果未能解决你的问题,请参考以下文章

png图片怎么通过代码实现压缩到指定的文件大小,比如5M压缩到200KB,比如用pngquant或imageMagick

Linux端图形处理工具ImageMagick在Centos上的安装

如何在 AWS Lambda 上安装 GraphicsMagick 或 ImageMagick?

PHP 或 Imagemagick :图像中主要颜色的数量

将 OpenType 功能与 ImageMagick 或 GraphicsMagick 一起使用

我应该将哪些文件复制到我的项目中以使用 ImageMagick?或如何在 Windows 上使用 MinGW 编译 ImageMagick?