如何使用 gimp 脚本 fu 保存(导出)所有图层?

2023-12-30

有了 gimp fu,我可以保存以下内容one层(至少,这就是我解释的定义gimp_file_save因为它需要参数drawable).

现在,我有以下脚本:

from gimpfu import *

def write_text():

    width  = 400
    height = 100

    img = gimp.Image(width, height, RGB)
    img.disable_undo()


    gimp.set_foreground( (255, 100, 20) )
    gimp.set_background( (  0,  15, 40) )

    background_layer = gimp.Layer(
                           img,
                           'Background',
                           width,
                           height,
                           RGB_IMAGE,
                           100,
                           NORMAL_MODE)

    img.add_layer(background_layer, 0)
    background_layer.fill(BACKGROUND_FILL)

    text_layer = pdb.gimp_text_fontname(
                    img,
                    None,
                    60,
                    40,
                    'Here is some text',
                    0,
                    True,
                    30,
                    PIXELS,
                    'Courier New'
                )

    drawable = pdb.gimp_image_active_drawable(img)

#   Either export text layer ...
#   pdb.gimp_file_save(img, drawable, '/temp/tq84_write_text.png', '?')

#   .... or background layer:
    pdb.gimp_file_save(img, background_layer, '/temp/tq84_write_text.png', '?')

register(
  proc_name     = 'tq84_write_text',
  blurb         = 'tq84_write_text',
  help          = 'Create some text',
  author        = 'Rene Nyffenegger',
  copyright     = 'Rene Nyffenegger',
  date          = '2014',
  label         = '<Toolbox>/Xtns/Languages/Python-Fu/_TQ84/_Text',
  imagetypes    = '',
  params        = [],
  results       = [],
  function      = write_text
)

main()

当我使用pdb.gimp_file_save(img, drawable, '/temp/tq84_write_text.png', '?')保存图像时,它只会导出“文本”图层。然而,如果我使用pdb.gimp_file_save(img, background_layer, '/temp/tq84_write_text.png', '?')它只会导出背景。那么,如何将两个图层导出到一张图像中(如菜单File -> Export As会做)。


即使是所有格式的 GIMP 文件导出器插件,内部所做的工作也是:复制图像,合并所有可见图层,然后保存生成的可绘制对象。

这比听起来更容易,并且占用的资源更少。实际上你只需要更换你的保存线

pdb.gimp_file_save(img, background_layer, '/temp/tq84_write_text.png', '?')

by

new_image = pdb.gimp_image_duplicate(img)
layer = pdb.gimp_image_merge_visible_layers(new_image, CLIP_TO_IMAGE)
pdb.gimp_file_save(new_img, layer, '/temp/tq84_write_text.png', '?')
pdb.gimp_image_delete(new_image)

(最后一次调用只是从程序内存中“删除”新图像,当然,释放资源)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 gimp 脚本 fu 保存(导出)所有图层? 的相关文章

随机推荐

  • UWP Navigation通过 MVVM 进行视图导航

    我在我的应用程序中使用 NavigationView 作为主控件 并在页面加载时使用框架
  • 如何暂停和恢复jquery间隔

    我用 jQuery 制作了一个自定义滑块 为此 我使用了 setInterval 函数 timer setInterval function 8000 但我无法暂停和恢复间隔 我有 2 个按钮 播放 暂停 我想使用 假设我在 3 秒后单击
  • 如何从项目级别指定 --add-opens 并确保无论以何种方式运行我的应用程序都将其考虑在内?

    我最近迁移到 Java 17 随之而来的一些限制要求我使用 add opens因为运行我的应用程序时存在一个依赖项 当我需要添加这个java jar命令已运行 现在我找到了这些解决方案 我可以将其添加到运行该项目的 Dockerfile 中
  • Oracle SQL 全外连接

    我使用 FULL OUTER JOIN 连接 2 个表 运行并给出输出需要 6 分钟 SELECT FROM tab1 FULL OUTER JOIN tab2 ON tab1 id tab2 id 我使用 LEFT OUTER JOIN
  • 从 eclipse+gradle 运行时,Spring Boot 错误地加载测试配置

    当我从 Eclipse STS 作为 Java 应用程序 或 Spring Boot 应用程序 运行 Spring Boot 应用程序时 该应用程序失败 因为它尝试从以下位置加载配置 Configuration 测试类路径 问题是它适用于基
  • 将 C++11 与 2013 年左右编译器一起使用的选项

    是否有任何完整 正确的实施可用 现在 对于 C 11 正则表达式 关于编译器支持与库支持的注意事项 编译器支持 编译器可以识别针对相关功能添加到语言中的任何新语法 利用添加到程序中的新功能的代码将进行编译 图书馆支持 更新库以实际实现该功能
  • 重新排序时 UITableViewCell 的子视图不可见

    当我重新排序 UITableViewCells 时 拖动时单元格的子视图不可见 无论我在 UITableViewCell 子类中还是在 Storyboard 中以编程方式添加子视图 我总是得到相同的结果 拖动时是否有可能看到带有子视图的真实
  • JMeter分布式测试和命令行参数

    我一直在使用 JMeter 参数来指定负载测试的测试属性 例如 testduration rampup period 等 我在 shell 脚本中指定这些参数 它看起来像这样 JMETER PATH home
  • VB.NET:VB.NET 中的静态 T (C#) 是什么?

    考虑 public static T GetValueOrDefault
  • 程序集/Nasm - 分段错误(核心转储)错误

    我对 NASM 很陌生 我正在尝试执行我找到的在线 MASM 示例 但转换为 NASM 很痛苦 它正确编译并生成输出文件 但是当我尝试运行它时 它给出了分段错误 核心转储错误 我不知道它是什么 操作系统是Ubuntu 尝试在以下环境下执行编
  • 通配某些 YYYYMMDD 日期

    我正在尝试向我的 perl 脚本提供几个文件按日历周 它只是获取从 bash 获取的所有文件 foreach my input ARGV 命名约定如下 FILE XYZ 20140908 0000 000XYZ 这个月的第一周没问题 FIL
  • 无法导出 Kendo Grid 中的隐藏列

    我想隐藏 Kendo Grid 上的一些列并将它们导出到 Excel 作为可见列 然而 使用隐藏 真实 or 可见 假 没有任何意义 并且这些字段不会被导出 解决方法this http www telerik com forums exce
  • Autofac 具有同一接口的多个实现

    我正在使用 Autofac 并且希望有一个接口的多个实现 如何配置 Autofac 以便根据当前类型解决依赖关系 更具体地说 我有一个接口和多个应该链接在一起的实现 让我解释一下 虚构的类 public interface IMessage
  • 在postgresql中创建表空间

    我正在尝试在 postgres 中创建表空间 但遇到所有权问题 我正在使用的命令是 CREATE TABLESPACE magdat OWNER maggie LOCATION home john BSTablespace 我收到错误 ER
  • .NET 4 中是否允许通用运算符重载?

    我假设 否 但我在谷歌上找不到确凿的证据来支持这个假设 使用关键字 vb net 通用运算符重载 仅产生 1 个结果 删除 重载 会产生更多结果 但没有直接说明该问题 我的想法是给定一个抽象类 如果能够实现派生类可以使用的通用运算符重载 在
  • 锁损坏了?魔法僵局?

    我正在处理多线程错误 现在我看到由于某种原因锁甚至没有执行一次而是被锁定了 我还有下一堂课 public sealed class Foo private readonly object lock new object private st
  • 使用 Python 关闭 AWS Lambda 执行上下文后进行清理

    来自使用 AWS Lambda 函数的最佳实践 https docs aws amazon com lambda latest dg best practices html 利用执行上下文重用来提高函数的性能 在函数处理程序之外初始化 SD
  • 使用 Maven 2 构建可运行的 jar

    我对 Maven 咒语相对较新 但我正在尝试使用 Maven 构建一个命令行可运行的 jar 我已经设置了我的依赖项 但是当我运行时mvn install并尝试运行罐子 发生了两件事 首先 没有找到主类 这是可以纠正的 当我更正这个问题后
  • 推送到 vercel 后无法连接到 websocket 服务器

    当我在本地运行我的服务器时 它工作得很好 但是 一旦我将其上传到 vercel 我就会收到类似 polling xhr js 202 GET 的错误400 与 wss giphy chat server vercel app socket
  • 如何使用 gimp 脚本 fu 保存(导出)所有图层?

    有了 gimp fu 我可以保存以下内容one层 至少 这就是我解释的定义gimp file save因为它需要参数drawable 现在 我有以下脚本 from gimpfu import def write text width 400