我有一个多层PSD,其中一个特定图层是非光栅化文本。我试图找出一种方法,从bash / perl / python / whatever-else程序:
- 加载PSD
- 编辑所述图层中的文本
- 展平图像中的所有图层
- 保存为PNG或JPG等网络友好格式
我马上想到了 ImageMagick的,但我认为我不能通过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 Imaging Library(PIL, 这似乎支持它),但否则你可能只需打开Photoshop进行转换。这意味着首先实际更改文本可能不值得。
您可以使用Photoshop本身使用OLE执行此操作。当然,您需要安装Photoshop。 Perl中的Win32 :: OLE或Python中的类似模块。看到 http://www.adobe.com/devnet/photoshop/pdfs/PhotoshopScriptingGuide.pdf
如果你要自动化Photoshop,你几乎必须使用Photoshop自己的脚本系统。我不认为有办法解决这个问题。
以不同的方式查看问题,您可以从Photoshop导出到支持图层的其他格式,如PNG,可由ImageMagick编辑吗?
您也可以使用Node.js尝试此操作。我制造了一个 PSD命令行工具
单行命令安装(需要安装NodeJS / NPM)
npm install -g psd-cli
然后,您可以通过键入终端来使用它
psd myfile.psd -t
您可以查看代码以从其他节点脚本使用它,或通过您的shell使用它来自另一个Bash / Perl /任何脚本。