gen_psd
from PIL import Image from psd_tools import PSDImage from psd_tools.api.layers import PixelLayer def image_to_psd(image_obj: Image, save_path): # 确保图像模式为 RGBA if image_obj.mode != "RGBA": image_obj = image_obj.convert("RGBA") # 将PIL图像转换为PSD格式 psd = PSDImage.frompil(image_obj) # 创建一个新图层 pixel_layer = PixelLayer.frompil(image_obj, psd) pixel_layer.visible = True # 设置图层为可见 psd.append(pixel_layer) # 将图层添加到PSD中 psd.save(save_path) # 保存为PSD文件 if __name__ == "__main__": image_obj = Image.open(r"D:\project_2025\live2d\talking-head-anime-4-demo-main\demo\character_model\character.png") save_path = 'demo.psd' image_to_psd(image_obj, save_path)创建多个图层:
from PIL import Image from psd_tools import PSDImage from psd_tools.api.layers import PixelLayer def image_to_psd(image_paths, save_path): # 读取第一张图,作为 PSD 画布 base_img = Image.open(image_paths[0]).convert("RGBA") psd = PSDImage.frompil(base_img) # 第一个图层 layer0 = PixelLayer.frompil(base_img, psd) layer0.name = "Base" layer0.visible = True psd.append(layer0) # 后续图片作为新图层 for i, img_path in enumerate(image_paths[1:], start=1): img = Image.open(img_path).convert("RGBA") layer = PixelLayer.frompil(img, psd) layer.name = f"Layer_{i}" layer.visible = True psd.append(layer) # 保存 PSD psd.save(save_path) if __name__ == "__main__": image_paths = [ r"D:\project_2025\live2d\talking-head-anime-4-demo-main\demo\data\images\lambda_02_face_mask.png", r"D:\project_2025\live2d\talking-head-anime-4-demo-main\demo\data\images\lambda_02.png", ] image_to_psd(image_paths, "demo.psd")