Image 如何从PSD文件中提取图像,包括包含在单个层中的图像

Image 如何从PSD文件中提取图像,包括包含在单个层中的图像,image,extract,photoshop,gimp,psd,Image,Extract,Photoshop,Gimp,Psd,我不太了解成像工具,但我需要提取psd文件层中包含的图像。我尝试使用带有“保存所有层”插件的GIMP,但那只是保存根层,所以我最终只得到了两个.png。我需要每个图像在一个单独的文件与正确的大小 我之所以需要这些文件,是因为我一直在要求使用这些图像创建一个带有CSS的动画。动画示例位于 我试图提取的psd文档是 问题在于这些文件是用图层组构成的(我只打开了其中一个)。 虽然GIMP支持打开文件,但您使用的“保存所有层”插件可能不知道层组 (顺便说一句,GIMP不稳定-2.9开发版本目前可能因打开

我不太了解成像工具,但我需要提取psd文件层中包含的图像。我尝试使用带有“保存所有层”插件的GIMP,但那只是保存根层,所以我最终只得到了两个.png。我需要每个图像在一个单独的文件与正确的大小

我之所以需要这些文件,是因为我一直在要求使用这些图像创建一个带有CSS的动画。动画示例位于

我试图提取的psd文档是

问题在于这些文件是用图层组构成的(我只打开了其中一个)。 虽然GIMP支持打开文件,但您使用的“保存所有层”插件可能不知道层组

(顺便说一句,GIMP不稳定-2.9开发版本目前可能因打开PSD而被破坏-图像在那里打开时出现混乱。不过,它是在GIMP 2.8.10中打开的)

可以通过Python控制台中的交互将所有层(包括子层)保存为单独的图像。 由于PSD是GIMP中唯一打开的图像,请转到filters->python->console并键入以下内容:

img = gimp.image_list()[0]  # retrieves a reference to the image

folder = "/tmp/" # folder of you choice for saving the files
counter = 0
def save_recurse(item):
    global counter 
    if hasattr(item, "layers"):
        for layer in reversed(item.layers):
            save_recurse(layer)
    else:
        counter += 1
        name = folder + "layer_%03d.png" % counter
        pdb.gimp_file_save(img, item, name, name)


save_recurse(img)
(顺便说一句,我在这里键入了它,您可以在GIMP的Python控制台中复制并粘贴上面的列表)