以编程方式编辑 Photoshop PSD 文本图层
题
我有一个多层 PSD,其中一个特定层是非光栅化文本。我试图从 bash/perl/python/whatever-else 程序中找出一种方法:
- 加载 PSD
- 编辑该图层中的文本
- 展平图像中的所有图层
- 保存为 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 内部文本的唯一方法是使用基于正则表达式的替换。
- 在 Photoshop 中创建一个非常简单的图片,可能是白色背景和文本图层,文本长度已知。
- 在文件中搜索文本,然后使用十六进制编辑器在附近搜索文本的长度(可能是也可能不是文件格式的一部分)。
- 尝试更改文本,首先更改为相同长度的字符串,然后更改为更短/更长的字符串。
- 每次更改后在 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 使用它。