如何在Python中使用Gimp保存分层图像?

问题描述 投票:0回答:1

我需要创建一个自动化程序,将两个图像合并到一个分层文件中(与 Photoshop 图层一样分层),以便通过 Photoshop 内部的批处理进一步处理图像。我尝试过 ImageMagick、psd_tools、PIL 和其他一些东西。其中大多数创建单个分层文件(例如,即使它是 TIF)或多页文件。 Photoshop 无法识别这个多页文件,只会读取第一张图像,这使得该文件对我来说毫无用处。

我能够创建一个分层文件,就像我需要的那样,使用layeredimage.io,但它似乎支持的唯一多层格式是.ORA(开放光栅),Photoshop 不支持它。吉普可以应付。顺便说一句,

layeredimage.io
似乎能够保存分层的PSD,但返回“未实现”错误。我也无法以任何其他格式保存分层文件(例如 xcf 或 tif)。

所以,此时我有点进退两难。我有两个选择:

  1. 在 Gimp 中打开文件并通过 Scriptfu 将其保存在 XCF 或 PSD 中;
  2. 使用 gimpfu import 在我正在创建的 python 脚本中对其进行操作。

每个人都有自己的问题:

选项 1:在 gimp 和 Scriptfu 中打开文件以将其保存为不同的格式

我似乎无法理解这个 scriptfu 是如何工作的,也无法找到有关 save-psd 命令参数的更多详细信息。我不断遇到与“image”变量相关的错误。我只需要打开文件(我可以在 python 脚本中执行此操作)并运行一个命令(导出为)

选项2:导入gimpfu并从python脚本内部操作gimp

我发现这是一个常见问题,但我找不到适合我的答案。

from gimpfu import *
返回错误:
ModuleNotFoundError: No module named 'gimpfu'
。 我目前正在安装了 gimp 和 Python 2.x 的 Fedora 中运行该脚本,通过快速搜索,我可以在
gimpfu.py
中找到
usr/lib64/gimp/2.0/python
文件,这意味着它存在于我的计算机中。 我也在我的 Windows 机器(将用于生产)中进行了测试,但它也不起作用。

下面是迄今为止的脚本:

import layeredimage.io as layered
from PIL import Image
# from gimpfu import * 

# TODO: FIND A WAY TO MAKE VSCODE READ GIMPFU IN /USR/LIB64/GIMP/2.0/PYTHON/GIMPFU.PY

def png_to_tif(file_name):
    """
    Converts a PNG file to TIF and returns the TIFF file path
    """
    png = Image.open(file_name)
    tif_name = file_name.replace("png", "tif")
    tiff = png.save(tif_name)
    return tif_name


base_file = layered.openLayerImage("/home/user/Pictures/imaginer/test1.tif")
imageDimensions = base_file.dimensions

mask_png = "/home/user/Pictures/imaginer/alpha.png"
mask_tif = png_to_tif(mask_png)
mask = Image.open(mask_tif)

img_layered = base_file.insertImageAsLayer(mask,'python',1)

ora_file = "/home/user/Pictures/imaginer/pqpBR.ora"

layered.saveLayer_ORA(ora_file, base_file)

我尝试检查是否拥有所需的所有软件包,尝试了与 gimp 交互的其他方法,但到目前为止,没有任何效果。

python image-processing psd gimpfu
1个回答
0
投票

在Imagemagick中,要创建简单的分层PSD,您必须创建PSD展平图层。您还必须颠倒图像的顺序。所以对于

输入:

Unix IM 6 语法:

convert lena.jpg mandril3.jpg zelda1.jpg redhat.jpg \( -clone 0-3 -flatten \) -reverse layered.psd

生成的图层 PSD(zip 文件):

对于 Windows,删除括号中的 \s。对于 IM 7,将转换更改为 magick

© www.soinside.com 2019 - 2024. All rights reserved.