使用Python自动化简单的Photoshop

时间:2019-06-06 00:38:39

标签: python photoshop win32com psd

我从事的业务是创建激光雕刻定制产品。雕刻机要求文件为psd格式。我们的网站使用户可以选择模板并输入所需的文本。订购后,我们的一名工人在GIMP / Photoshop中打开模板,切换出文本,然后保存并上传。看起来很简单,但是当您每天要进行数百次操作时,似乎值得自动化。

我说的主要语言是python,但是我对其他语言的涉猎程度足以使我可以做一些小型项目。我看到那里有一些不同的PSD / photoshop模块(pywin32,pyps,psd工具),但是它们上的文档不足或者它们似乎不适合我的目的。 更详细地讲,唯一需要做的就是添加一个文本层,我们可以在其中选择字体,位置,最好选择诸如是否加粗,斜体等内容,但这不是必需的。我有一个可以(通过win32com)制作文本层的解决方案,但是我找不到如何编辑文本的不同元素。

import win32com.client

# Pieced together from
# http://techarttiki.blogspot.com/2008/08/photoshop-scripting-with-python.html
# and
# http://rubypane.blogspot.com/2013/01/sample-python-script-to-control.html

psApp = win32com.client.Dispatch("Photoshop.Application")
psApp.Open(r"C:\temp\blah.psd")         # Opens a PSD file
doc = psApp.Application.ActiveDocument  # Get active document object
layer = doc.ArtLayers[2]                # Get the bottom-most layer

layers = doc.artLayers
artLayerRef = layers.add

artLayerRef.kind = 2 #Text layer
# Set the contents of the text layer.
textItemRef = artLayerRef.TextItem
textItemRef.Contents = "Hello, web!"

doc.Save()

该代码段生成一个小的文本框,而没有任何格式显示“ Hello World!”。同样,我希望能够控制它的位置,字体以及(如果可能)它的其他元素。我也对其他解决方案持开放态度,无论是以其他格式创建图片然后将其转换为psd,与其他模块/语言一起使用,还是您精明的头脑可以想到的任何其他解决方案。最坏的情况是,我们继续手动进行操作。谢谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您可以尝试使用软件包photoshop_python_api

https://github.com/loonghao/photoshop_python_api

Hello World

import photoshop as ps


def hello_world():
    app = ps.Application()
    doc = app.documents.add()
    text_color = ps.SolidColor()
    text_color.rgb.green = 255
    new_text_layer = doc.artLayers.add()
    new_text_layer.kind = ps.LayerKind.TextLayer
    new_text_layer.textItem.contents = 'Hello, World!'
    new_text_layer.textItem.position = [160, 167]
    new_text_layer.textItem.size = 40
    new_text_layer.textItem.color = text_color
    options = ps.JPEGSaveOptions(quality=5)
    jpg = 'd:/hello_world.jpg'
    doc.saveAs(jpg, options, asCopy=True)
    app.doJavaScript(f'alert("save to jpg: {jpg}")')


if __name__ == '__main__':
    hello_world()

更多示例:

https://photoshop-python-api.readthedocs.io/en/master/examples.html