我有一个多层 PSD,其中一个特定层是非光栅化文本。我试图从 bash/perl/python/whatever-else 程序中找出一种方法:

  1. 加载 PSD
  2. 编辑该图层中的文本
  3. 展平图像中的所有图层
  4. 保存为 Web 友好格式,例如 PNG 或 JPG

我立刻想到 图像魔术师, ,但我不认为我可以通过IM编辑文本图层。如果我可以通过其他编程方式完成前两个步骤,我始终可以使用 ImageMagick 来执行最后两个步骤。

经过几个小时的谷歌搜索和搜索 CPAN 和 PyPI 后,我仍然没有发现任何有希望的东西。有人对这个主题有建议或想法吗?

有帮助吗?

解决方案

如果您不喜欢使用官方支持的 AppleScript、JavaScript 或 VBScript,那么也可以使用 Python。文章中对此进行了解释 使用 Python 编写 Photoshop 脚本, ,它依赖于Photoshop的COM接口。

我还没有尝试过,所以如果它对你不起作用:如果您的文本在之后保留 转换为 SVG 然后你可以简单地用你喜欢的任何工具替换它。然后,将其转换为 PNG(例如经过 inkscape --export-png=...).

其他提示

您是否考虑过在 GIMP 中打开并编辑图像?它具有非常好的 PSD 支持,并且可以用多种语言编写脚本。

您使用哪一个部分取决于您的平台,据我所知,Perl 界面无法在 Windows 上运行。我相信所有端口都支持Scheme。

我能想到的自动更改 PSD 内部文本的唯一方法是使用基于正则表达式的替换。

  1. 在 Photoshop 中创建一个非常简单的图片,可能是白色背景和文本图层,文本长度已知。
  2. 在文件中搜索文本,然后使用十六进制编辑器在附近搜索文本的长度(可能是也可能不是文件格式的一部分)。
  3. 尝试更改文本,首先更改为相同长度的字符串,然后更改为更短/更长的字符串。
  4. 每次更改后在 Photoshop 中打开以查看文件是否已损坏。

此方法(如果可行)仅在相关图层包含已知字符串(可以替换您的其他值)时才有效。请注意,我不知道这是否有效,因为我的计算机上没有 Photoshop 来尝试此方法。也许你能让它发挥作用?

至于转换成png,我很茫然。如果替换脚本是 Python 语言,您可以使用 Python 成像库(PIL、 这似乎支持它),但否则您可能只需打开 Photoshop 即可进行转换。这意味着一开始就可能不值得实际地更改文本。

您可以使用 Photoshop 本身通过 OLE 来完成此操作。当然,您需要安装 Photoshop。Perl 中的 Win32::OLE 或 Python 中的类似模块。看 http://www.adobe.com/devnet/photoshop/pdfs/PhotoshopScriptingGuide.pdf

如果您要实现 Photoshop 的自动化,您几乎必须使用 Photoshop 自己的脚本系统。我认为没有办法解决这个问题。

从不同的角度看问题,您能否从 Photoshop 导出为支持图层的其他格式,例如可以通过 ImageMagick 编辑的 PNG?

您还可以使用 Node.js 尝试此操作。我制造了一个 PSD 命令行工具

一行命令安装(需要安装 NodeJS/NPM)

npm install -g psd-cli

然后您可以通过在终端中输入来使用它

psd myfile.psd -t

您可以查看代码以从另一个节点脚本使用它,或者通过另一个 Bash/Perl/任何脚本的 shell 使用它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top