如何仅使用 GIMP 的 python-fu 将图像保存为无损 webp

How to save an image as a lossless webp using only GIMP's python-fu

我有一个 python-fu 问题。 我正在使用 GIMP 2.10.12,mac 版本。
假设我在 GIMP

中打开了一张图片

原始示例图片:

并且我想使用 python-fu 将其保存为 webp 格式。我这样做:

img=gimp.image_list()[0]
图层=img.layers[0]
pdb.gimp_file_save(img,layer,'/my_path/my_image.webp','?')

它可以工作,但是当我检查生成的 webp 文件时发现它的质量已经下降。正在使用有损压缩保存。

生成的有损图像:

如果我对 GUI 执行相同的过程,在对话框中有无损压缩的复选框,我选中了它,生成的文件具有我想要的质量。

选中无损选项的 Gimp 对话框:

我的问题是:如何仅使用 Python-fu 而不是 GUI 将图像保存为 webp 文件并选中无损压缩选项?

我试过:
- 先拼合图像以去除 alpha 通道,但没有用。
-查看 GIMP 的开发者文档,但还没有找到任何东西。
- 在首选项面板中寻找一种默认选中无损选项的方法。还没有找到任何东西。

我错过了什么吗?欢迎任何指点。谢谢

当您使用 gimp-file-save 保存图像时,Gimp 通过查看您在名称中提供的扩展名来确定图像类型,并使用为此类型设置的默认设置保存它。对于某些图像类型(JPEG 和 PNG),一种解决方案是更改 Gimp 的默认选项,但无法为 WebP 更改它们。

然而,一般的解决方案是有特定于类型的 export/save 函数(通常称为 file-${type}-save),并且这些函数具有导出对话框中显示的所有选项。对于 WebP,您将使用 file-webp-save(*):

如您所见,其中有一个 lossless 选项。

我从来没有用过那个,但警告的话:通常这些调用只保存一个“drawable”,即在大多数情况下,一个单层。如果您有多层图像并想保存整个图像,则必须将其拼合(或保存拼合的副本)或创建一个临时层以使用 gimp_layer_new_from_visible).

进行保存

(*) 如果您还没有找到它,Filters > Python-fu > Console 会为您提供一个控制台来尝试一些事情,并且在那个 window 中,一个 Browse 按钮会将您带到该过程记录所有内容的浏览器(此文档是动态生成的,并考虑了您可能添加的所有插件)。