以编程方式编辑Photoshop PSD文本图层

时间:2009-05-12 02:27:03

标签: python perl image photoshop psd

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

  1. 加载PSD
  2. 编辑所述图层中的文字
  3. 展平图片中的所有图层
  4. 另存为PNG或JPG等网络友好格式
  5. 我立刻想到了ImageMagick,但我认为我不能通过IM编辑文本图层。如果我可以通过其他一些编程方式完成前两个步骤,我总是可以使用ImageMagick执行最后两个步骤。

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

6 个答案:

答案 0 :(得分:6)

如果您不想使用官方支持的AppleScript,JavaScript或VBScript,那么也可以在Python中使用它。这篇文章在Photoshop scripting with Python中有所解释,它依赖于Photoshop的COM界面。

我没有尝试过,所以万一它不适合你: 如果您的文字在conversion to SVG之后保留,那么您可以简单地用您喜欢的任何工具替换它。然后,将其转换为PNG(例如,通过inkscape --export-png=...)。

答案 1 :(得分:3)

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

  1. 在Photoshop中创建一个非常简单的图片,可能是白色背景和文本图层,文字是已知长度。
  2. 在文件中搜索您的文字,并使用十六进制编辑器在附近搜索文本的长度(可能是也可能不是文件格式的一部分)。
  3. 尝试更改文本,首先更改为相同长度的字符串,然后更短/更长。
  4. 每次更改后在Photoshop中打开以查看文件是否已损坏。
  5. 此方法(如果可行)仅在相关图层包含已知字符串时才有效,该字符串可替换为您的其他值。请注意,我不知道这是否会起作用,因为我在这台计算机上没有Photoshop来尝试这种方法。也许你可以让它发挥作用?

    至于转换为png,我很茫然。如果替换脚本是在Python中,您可以使用Python Imaging Library(PIL,which seems to support it)来完成,但是否则您可能只需要打开Photoshop来进行转换。这意味着首先实际更改文本可能不值得。

答案 2 :(得分:3)

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

您使用哪一个部分取决于您的平台,Perl界面在我知道的最后一个窗口上不起作用。我相信所有端口都支持Scheme。

答案 3 :(得分:2)

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

答案 4 :(得分:1)

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

以不同的方式查看问题,您可以从Photoshop导出到支持图层的其他格式,例如PNG,可由ImageMagick编辑吗?

答案 5 :(得分:1)

您也可以使用Node.js尝试此操作。我做了PSD command-line tool

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

npm install -g psd-cli

然后您可以通过在终端中输入

来使用它

psd myfile.psd -t

您可以查看从其他节点脚本使用它的代码,或者通过shell使用它来自另一个Bash / Perl /无论什么脚本。