GiMP ( snap ) 和 .xcf 文件的缩略图

GiMP ( snap ) 和 .xcf 文件的缩略图

在 Ubuntu(Budgie)20.04 上使用 Gimp 作为快照时,您只会在 Gimp 内部看到 .xcf 文件的缩略图,而不会在其他地方看到(Nemo、Nautilus、gThumb……)

1⋅如何告诉我的会话寻找缩略图不仅在,~/.cache/thumbnails/而且在任何缩略图文件夹里面~/snap/

2⋅再次阅读 snap doc 我想知道https://snapcraft.io/docs/thumbnailer-service-interface可能是答案。我应该将该接口连接到 Gimp 吗?或者它不能满足我的要求?

回答1⋅可能会解决任何 snap 应用程序最终生成缩略图的问题。

进来2⋅不符合我的预期。

参考文献:https://forum.ubuntu-fr.org/viewtopic.php?id=2053949https://forum.snapcraft.io/t/gimp-and-thumbnails-for-xcf-files/18131https://discourse.ubuntubudgie.org/t/gimp-as-a-snap-no-thumbnails-for-xcf-files-in-nemo-gthumb/3799

答案1

缩略图可以提高效率。每次打开大型 XCF 文件才能查看其当前状态真是一种折磨。

缩略图服务接口可能是解决方案,但似乎需要为 XCF 缩略图实现和维护一个接口。因为似乎不存在。为了避免必须编写一个接口,我正在寻找一个更简单、更快速的实现时间解决方案。

thumbnail/normal将整个目录符号链接到目录内部的解决方案~/snap是可行的,并且每次使用 GIMP 打开和保存 XCF 文件时,缩略图都会自动更新。

如果您和我一样不想对整个目录进行符号链接,我建议您使用另一种临时解决方案:通过 Nautilus 脚本对各个缩略图进行符号链接。注意:需要对新创建的 XCF 文件运行脚本,而已经存在的文件的缩略图将自动更新。

剧本:

#!/bin/bash

for file in ~/snap/gimp/common/.cache/thumbnails/normal/*
do
    if [ -f $file ]
    then
        ln -s "$file" ~/".cache/thumbnails/normal/$(basename $file)"
    fi
done

如果需要,您可以对缩略图/大目录执行相同操作。

保存到 Nautilus 脚本文件夹,每次看到没有缩略图的 XCF 文件时都可以运行它。建议命名为“更新缩略图”,不需要 .sh 扩展名,但需要在文件权限中打开可执行位。

当符号链接已经存在时,该ln命令将会失败而不会造成损害。


另外,通过使用 script-fu,可以让 gimp 生成 128x128 PNG 文件,并将它们保存到~/.cache/thumbnails/normal目录中,从命令行,而无需加载其界面。

但是,尽管以下方法有效:

$fileshort=$(basename "$file")
uri=$(urlencode -m "$fileshort") # urlencode requires install
uri="file://$uri"
thumbfilename=$(echo -n "$uri" | md5sum | awk '{print $1}')
thumbfilename=~/.cache/thumbnails/normal/$thumbfilename.png

gimp -i -b "(let* ((image (car (gimp-file-load RUN-NONINTERACTIVE \"$file\" \"$file\")))
(drawable   (car (gimp-image-active-drawable image)))
(cur-width  (car (gimp-image-width image)))
(cur-height (car (gimp-image-height image)))
(ratio      (min (/ 128 cur-width) (/ 128 cur-height)))
(width      (* ratio cur-width))
(height     (* ratio cur-height))
)

(gimp-image-scale image width height)
(file-png-save RUN-NONINTERACTIVE image drawable \"$thumbfilename\" \"$thumbfilename\" 0 9 1 1 1 1 1)
(gimp-image-delete image)
)" -b "(gimp-quit 0)"

您需要以$file某种方式赋予一个值。例如,通过迭代目录。

有效缩略图名称的生成取决于urlencode命令,默认情况下该命令不存在。

"file://"有效的缩略图名称是获取 URI 形式的文件名的 md5 哈希并将 png 扩展名附加到其中的结果。

缩略图不会自动更新,每次想要更新时都必须手动运行脚本。

gimp-file-save-thumbnailscript-fu 命令,但我用它没用。我在文件系统中找不到生成的缩略图,而且该命令似乎没有返回任何内容。


理想的解决方案:GIMP 扩展可以知道 GIMP 是通过 snap 安装的,并且在~/.cache/thumbnails/normal您每次更新 XCF 文件时保存缩略图。

问题:使用 script-fu 可能不行。据我所知,这些脚本需要被调用。您可以在 GIMP 界面内将它们注册为菜单项,但您不能让它们对事件做出file open反应file save


其他可能的解决方案包括:

使用后台 bash 或 Python 脚本监控最近修改的目录,并扫描其中的 XCF 文件。可以调用上述脚本来生成缩略图,而无需显示 GIMP 界面。

挑战就是以最优的可能方式去做事。

答案2

这些都是非常棒的建议。

我最终将两个“缩略图”文件夹绑定在一起文件系统添加以下几行:

# .xcf thumbnails from gimp snap for anyone
/home/user_1/.cache/thumbnails/ /home/user_1/snap/gimp/common/.cache/thumbnails/    none    bind    0   0
/home/user_2/.cache/thumbnails/ /home/user_2/snap/gimp/common/.cache/thumbnails/    none    bind    0   0
/home/user_3/.cache/thumbnails/ /home/user_3/snap/gimp/common/.cache/thumbnails/    none    bind    0   0

这样,Gimp-snap 实际上会在那里写入其缩略图,然后 Nemo 和 Nautilus 会相应地显示 .xcf 文件的缩略图。

尽管 gThumb 仍然显示 .xcf 文件的空框 - 但我主要关心的是文件资源管理器。

谢谢https://forum.ubuntu-fr.org/viewtopic.php?pid=22362050#p22362050

相关内容