在python中与gimp交互(分层文件)

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

这可能是一个新手问题,但我花了一整天的时间试图找到解决方案,但找不到任何解决方案。

我对 python 也有点陌生,所以新手²。

我需要创建一个自动化程序,将两个图像合并到一个分层文件中(与 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中打开文件以将其保存为不同的格式。

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

案例2:导入gimpfu并从python脚本内部操作gimp

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

from gimpfu import *
返回并出现错误
ModuleNotFoundError: No module named 'gimpfu'
我目前正在我的 Fedora 中运行该脚本,该脚本安装了 gimp,安装了 Python 2.x,通过快速搜索,我可以在
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.