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

15

我有一个多层的PSD文件,其中一个特定的图层是非位图文本。 我正在尝试找出一种方法,可以从一个bash/perl/python/任何其他程序中:

  1. 加载PSD文件
  2. 编辑该图层中的文本
  3. 将图像中的所有图层压缩
  4. 保存为像PNG或JPG这样的Web友好格式

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

经过几个小时的谷歌搜索和CPAN和PyPI的搜索,我仍然没有找到令人满意的东西。 有人对此有建议或想法吗?


嗨@EvanK,你解决了这个问题吗?如果是,请与我分享。 - rkaartikeyan
是的,@EvanK,如果您找到了解决此问题的方法,请分享。 - Janak Vaghasiya
6个回答

6
如果您不喜欢使用官方支持的AppleScript、JavaScript或VBScript,那么也可以使用Python来编写。这在文章Photoshop scripting with Python中有所解释,该文章依赖于Photoshop的COM接口。
我没有尝试过,所以如果它对您没有用: 如果您的文本在转换为SVG后得到保留,则可以使用任何工具将其替换。之后,将其转换为PNG(例如通过inkscape --export-png=...)。

我想我会选择这条路线。除了PS内置脚本(如果我没记错的话必须手动从Photoshop中启动),这似乎是最一致的选项。 - EvanK

4
我所能想到的自动更改PSD文本的唯一方法是使用基于正则表达式的替换。
  1. 在Photoshop中创建一个非常简单的图片,可能是白色背景和一个文本层,其中文本长度已知。
  2. 搜索文件中的文本,并使用十六进制编辑器在附近搜索文本的长度(这可能是文件格式的一部分,也可能不是)。
  3. 尝试更改文本,首先更改为相同长度的字符串,然后更改为较短/较长的内容。
  4. 每次更改后打开Photoshop查看文件是否损坏。
如果图层包含已知字符串,则此方法(如果可行)仅适用于将其替换为其他值。请注意,我不知道这是否有效,因为我没有在此计算机上安装Photoshop来尝试此方法。也许您可以使它起作用?
关于转换为png格式,我有些不知所措。如果替换脚本是用Python编写的,您可能可以使用Python Imaging Library(PIL,似乎支持此功能)来完成,否则您可能只能打开Photoshop进行转换。这意味着在第一次实际更改文本之前,这样做可能不值得。

2
使用十六进制编辑是个好主意,但不幸的是它似乎无法改变图层中的文本(如果我用一个长度不同的字符串替换它,会破坏PSD文件)。 - EvanK
谢谢您提到这个。帮了我很多。 - Barry

3

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

您使用哪种语言取决于您的平台,我知道Perl接口在Windows上无法工作。我相信Scheme在所有端口都受支持。


2

1

如果你要自动化Photoshop,基本上必须使用Photoshop自己的脚本系统。我认为没有绕过这个的方法。

从不同的角度看问题,你能否从Photoshop导出到其他支持图层的格式,比如可由ImageMagick编辑的PNG格式?


0

你也可以尝试使用Node.js。我制作了一个PSD命令行工具

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

npm install -g psd-cli

然后在终端中键入以下命令即可使用

psd myfile.psd -t

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


嗨 @kartsims,这个命令可以导出文本详细信息,但我们如何在 PSD 文件中更改文本? - rkaartikeyan
不能用这个库完成,尝试一下它基于的 Node 库 PSD.js。它具有更多功能。 - kartsims

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接