程序化编辑Photoshop PSD文本图层

15 投票
6 回答
22104 浏览
提问于 2025-04-15 11:31

我有一个多层的PSD文件,其中有一层是未栅格化的文本。我想找个方法,通过bash、perl、python或者其他程序来:

  1. 加载这个PSD文件
  2. 编辑那一层的文本
  3. 把所有层合并成一层
  4. 保存为适合网页使用的格式,比如PNG或JPG

我首先想到的是ImageMagick,但我觉得我不能通过它来编辑文本层。如果我能用其他程序完成前两步,那我可以用ImageMagick来做后两步。

经过几个小时的谷歌搜索和查找CPAN和PyPI,我还是没有找到什么有用的东西。有没有人对此有建议或想法?

6 个回答

3

你有没有考虑过用The GIMP打开和编辑图片?这个软件对PSD文件支持得很好,而且可以用几种编程语言来写脚本。

你选择用哪种语言,部分取决于你使用的操作系统。我记得Perl接口在Windows上是不能用的。不过,我相信Scheme在所有版本中都是支持的。

4

我想到的唯一一种自动更改PSD文件中文本的方法,就是使用基于正则表达式的替换。

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

如果这个方法可行的话,只能在你要修改的图层里包含一个已知的字符串,这样才能替换成你想要的值。需要注意的是,我不知道这个方法是否真的有效,因为我在这台电脑上没有Photoshop,无法尝试。也许你可以试试看能不能成功?

至于转换成png格式,我就不知道该怎么做了。如果替换的脚本是用Python写的,你可能可以用Python图像库(PIL,它似乎支持这个功能)来实现,但如果不行的话,你可能还是得打开Photoshop来进行转换。这意味着一开始通过编程方式更改文本可能就不太划算。

6

如果你不想使用官方支持的AppleScript、JavaScript或VBScript,那么你也可以选择用Python来实现。这方面的内容可以参考这篇文章:用Python进行Photoshop脚本编写,它是通过Photoshop的COM接口来实现的。

我没有亲自尝试过,所以如果对你来说不管用的话:如果你的文本在转换为SVG后仍然保留,那么你可以用你喜欢的工具直接替换它。之后,再把它转换成PNG格式(比如用inkscape --export-png=...命令)。

撰写回答