13

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

  1. 加载PSD
  2. 编辑所述图层中的文本
  3. 展平图像中的所有图层
  4. 保存为网络友好格式,如 PNG 或 JPG

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

经过几个小时的谷歌搜索和 CPAN 和 PyPI,我仍然没有发现任何有希望的东西。有人对这个主题有什么建议或想法吗?

4

6 回答 6

6

如果您不喜欢使用官方支持的 AppleScript、JavaScript 或 VBScript,那么也可以使用 Python 来实现。这在文章Photoshop scripting with Python中进行了解释,该文章依赖于 Photoshop 的 COM 接口。

我没有尝试过,所以万一它对你不起作用:如果你的文本在转换为 SVG后被保留,那么你可以简单地用你喜欢的任何工具替换它。之后,将其转换为 PNG(例如 by inkscape --export-png=...)。

于 2009-05-12T07:07:47.523 回答
4

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

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

此方法(如果可行)仅在相关图层包含已知字符串时才有效,该字符串可以替换为您的其他值。请注意,我不知道这是否可行,因为我在这台计算机上没有 Photoshop 来尝试这种方法。也许你可以让它工作?

至于转换成png,我很茫然。如果替换脚本在 Python 中,您可以使用 Python Imaging Library(PIL,似乎支持它)来完成,否则您可能只需要打开 Photoshop 来进行转换。这意味着首先务实地更改文本可能不值得。

于 2009-05-12T05:18:51.663 回答
3

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

您使用哪一个部分取决于您的平台,Perl 界面在我所知道的最后一次无法在 Windows 上运行。我相信所有端口都支持 Scheme。

于 2009-05-12T08:12:17.183 回答
2

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

于 2009-05-12T10:35:01.350 回答
1

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

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

于 2009-05-12T03:01:50.310 回答
0

您也可以使用 Node.js 进行尝试。我做了一个PSD命令行工具

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

npm install -g psd-cli

然后,您可以通过在终端中输入来使用它

psd myfile.psd -t

您可以检查代码以从另一个节点脚本中使用它,或者通过您的 shell 使用它来自另一个 Bash/Perl/whatever 脚本。

于 2016-01-28T10:14:20.030 回答