Python PSD 图层?
我需要写一个Python程序,用来加载一个PSD格式的Photoshop图片,这种图片有很多层,然后把每一层分别保存成png文件。 请问在Python中可以做到吗?我试过用PIL库,但好像没有办法访问到这些层。求助。 另外,自己写一个PSD加载器和png写入器的速度太慢了。
6 个回答
1
你可以使用win32com这个工具,通过Python来访问Photoshop。
下面是你可以参考的伪代码:
- 加载PSD文件
- 获取所有图层,并把所有图层的可见性设置为关闭
- 逐个打开每个图层,把它们的可见性设置为开启,然后导出为PNG格式
import win32com.client pApp = win32com.client.Dispatch('Photoshop.Application') def makeAllLayerInvisible(lyrs): for ly in lyrs: ly.Visible = False def makeEachLayerVisibleAndExportToPNG(lyrs): for ly in lyrs: ly.Visible = True options = win32com.client.Dispatch('Photoshop.PNGSaveOptions') options.Interlaced = False tf = 'PNG file name with path' doc.SaveAs(SaveIn=tf,Options=options) ly.Visible = False #pApp.Open(PSD file) doc = pApp.ActiveDocument makeAllLayerInvisible(doc.Layers) makeEachLayerVisibleAndExportToPNG(doc.Layers)
3
在Python中使用psd_tools
from psd_tools import PSDImage
psd_name = "your_name"
x = 0
psd = PSDImage.open('your_file.psd')
for layer in psd:
x+=1
if layer.kind == "smartobject":
image.conmpose().save(psd_name + str(x) + "png")
5
想用Gimp-Python吗?可以看看这个链接:http://www.gimp.org/docs/python/index.html
这样你就不需要用Photoshop了,而且只要你的电脑上能运行Gimp和Python,这个方法就能用。虽然需要安装一些东西,但这些都是免费的。
如果你想用PIL来实现的话:
from PIL import Image, ImageSequence
im = Image.open("spam.psd")
layers = [frame.copy() for frame in ImageSequence.Iterator(im)]
补充:好的,我找到了解决办法:https://github.com/jerem/psdparse
这个工具可以让你用Python从psd文件中提取图层,不需要用其他语言的东西。