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

Python 以编程方式编辑Photoshop PSD文本层,python,perl,image,photoshop,psd,Python,Perl,Image,Photoshop,Psd,我有一个多层PSD,其中一个特定层是非光栅化文本。我正试图从bash/perl/python/其他任何程序中找到一种方法: 加载PSD 编辑所述层中的文本 展平图像中的所有层 另存为网页友好格式,如PNG或JPG 我立刻想到了,但我不认为我可以通过IM编辑文本层。如果我能以其他编程方式完成前两个步骤,我总是可以使用ImageMagick执行最后两个步骤 在谷歌搜索CPAN和PyPI几个小时后,我仍然没有发现任何有希望的东西。有人对此有什么建议或想法吗?如果你想让Photoshop自动化,你几乎必

我有一个多层PSD,其中一个特定层是非光栅化文本。我正试图从bash/perl/python/其他任何程序中找到一种方法:

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


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

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


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

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

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


    至于转换成png,我不知所措。如果替换脚本是用Python编写的,那么您可以使用Python图像库(PIL,)进行替换,否则您可能只需打开Photoshop即可进行转换。这意味着一开始可能不值得实用地更改文本。

    如果您不喜欢使用官方支持的AppleScript、JavaScript或VBScript,那么也可以使用Python。这篇文章对此进行了解释,它依赖于Photoshop的COM接口

    我没有尝试过,因此,如果它对您不起作用:
    如果您的文本在之后被保留,那么您可以简单地用您喜欢的任何工具替换它。然后,将其转换为PNG(例如通过
    inkscape--export PNG=…
    )。

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


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

    您可以使用Photoshop本身通过OLE实现这一点。当然,您需要安装Photoshop。Perl中的Win32::OLE或Python中的类似模块。请参见

    您也可以使用Node.js尝试此操作。我犯了一个错误

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

    npm安装-g psd cli

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

    psd myfile.psd-t


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

    十六进制编辑的好主意,但不幸的是,它似乎根本不会更改层中的文本(如果我用不同长度的字符串替换它,它会损坏PSD文件).谢谢你提到这件事。帮了我很多忙。我想我要走这条路。除了PS的内置脚本(如果我没有弄错的话,必须从Photoshop中手动启动)之外,它似乎是最一致的选项。Hi@kartsims这个命令导出文本细节,但是我们如何更改PSD文件中的文本?不能使用这个库,请尝试PSD.js,它基于的节点库。它有更多的功能Shi@EvanK,你有解决方案吗?如果是,请与我分享。