在整个产线系统中,基于windows的photoshop平台,应该是功能最强大,应用范围相对比较大的工具。所以在工作中将photoshop也纳入产线管理系统,对前期设计人员也是一件非常舒服的事情,只要本地保存好psd,一件提交上传正确的格式,尺寸,命名。并且不需要管最终输出的位置。每次提交的过程文件都会保存在服务器上,不用担心自己手残覆盖掉正确的源文件。
想想还是蛮爽的。但是ps本身没有python的开发接口。所以需要使用win32库或者java来驱动他。下面介绍一下win32库和java两种驱动方式。
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()
这个代码就是制作了一个小文本框,不过我觉得如果可以控制他的位置,字体或者其他什么的,会更好。不过简单的打开保存,已经满足了我的基础需求
除此之外第二种方法
可以尝试使用 photoshop_python_api
https://github.com/loonghao/photoshop_python_api
原版范例 : https://photoshop-python-api.readthedocs.io/en/master/examples.html
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()
这个定义的方法就多很多了。用起来也比上一个方法更灵活。当我需要出水印图的时候。也可以在服务器提交结束之后挂一个子行为把水印加上,并且在另一个位置保存一份。想想就觉得很爽。找到了方法。就让我们rock'n'roll起来。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/55137.html