如何为 Nautilus、Nemo 和 Caja 创建自定义缩略图?

Cal*_*Cat 8 nautilus thumbnails caja nemo

Nautilus(GNOME 文件)和基于 Nautilus 的文件管理器(即 Nemo 和 Caja)已经使用其默认缩略图器为许多常见文件类型创建了预览。还有许多其他缩略图可以从官方存储库安装,以便为更多文件创建缩略图。但是,自然有某些类型的文件不存在缩略图。我遇到过的此类类型的一些示例包括 WebP、PSD、JP2、APK 等。

我需要了解什么或必须采取哪些步骤来创建可供 Nautilus、Nemo 或 Caja 用来生成这些文件类型的缩略图的自定义缩略图器?

Cal*_*Cat 21

参考

\n\n

以下部分提供了有关缩略图过程的重要详细信息,以及为 Nautilus、Nemo 和 Caja创建自定义缩略图器的步骤(上述文档中未提及)。

\n

需要注意的是,Nautilus是指实现缩略图沙箱的最新版本的 Nautilus 。libgnome-desktop 在 Ubuntu 上,它们是使用3.28.2或更高版本的 Nautilus 版本。

\n

缩略图和缩略图条目

\n

要生成文件的缩略图,需要两个基本条件:

\n
    \n
  • 缩略图程序(或简称缩略图程序):一种可以以某种方式将文件转换为 PNG 图像的程序,最好具有调整图像大小的选项。一些例子是convertffmpeggdk-pixbuf-thumbnailer等。
  • \n
  • 缩略图条目.thumbnailer:扩展名为 或 的~/.local/share/thumbnailers文本文件/usr/share/thumbnailers。该文件将缩略图程序连接到程序将为其创建缩略图的文件类型。缩略图条目看起来像这样:\n
    [Thumbnailer Entry]\nTryExec=/usr/bin/gdk-pixbuf-thumbnailer\nExec=/usr/bin/gdk-pixbuf-thumbnailer -s %s %i %o\nMimeType=image/jpeg;image/png;image/gif;image/tiff;\n
    Run Code Online (Sandbox Code Playgroud)\n
  • \n
\n

每个缩略图条目均采用密钥文件格式,支持三个密钥:

\n
    \n
  • TryExec:(可选)该键用于检查是否安装了缩略图程序。它的值是缩略图程序的路径或可以在$PATH环境变量中找到的程序的名称。如果程序不存在或不可执行,则Exec密钥中的命令将不会被执行。然而,Nautilus会忽略此键并始终尝试执行缩略图程序。

    \n
  • \n
  • Exec:(必填)生成缩略图所要执行的命令。该命令由缩略图程序的完整路径或其名称(在当前目录中$PATH)组成,后跟空格分隔的参数。参数可以是在传递给缩略图之前自动替换的几个特殊参数之一:

    \n
      \n
    • %i:(如果未使用则为必需%u)正在缩略图的文件的完整路径,例如:\n
      /home/calico/Pictures/image.jpg\n/home/calico/Music/Pop Music/audio.mp3\n
      Run Code Online (Sandbox Code Playgroud)\n路径作为单个参数传递给缩略图程序,无论它是否包含空格或其他特殊字符。
    • \n
    • %u:(如果未使用则为必需%i)正在缩略图化的文件的 URI。%u应该使用而不是%i缩略图程序是否可以处理 URI 语法。本地文件作为 传递file://<full-path-to-file>,例如:\n
      file:///home/calico/Pictures/image.jpg\nfile:///home/calico/Music/Pop%20Music/audio.mp3\n
      Run Code Online (Sandbox Code Playgroud)\n
    • \n
    • %o:(必填)输出缩略图的完整路径。Nautilus、Nemo 和 Caja 分别将输出图像写入:\n
      /tmp/gnome-desktop-thumbnailer-XXXXXX/gnome-desktop-thumbnailer.png\n/tmp/.gnome_desktop_thumbnail.XXXXXX\n/tmp/.mate_desktop_thumbnail.XXXXXX\n
      Run Code Online (Sandbox Code Playgroud)\nXXXXXX是由大写字母和数字组成的 6 个字符的字符串。每个输出图像文件都被赋予一个唯一的XXXXXX.
    • \n
    • %s:(可选)默认缩略图大小(以像素为单位)。如果使用,%s则替换为128(由 Caja 或较旧版本的 Nemo)或256(由 Nautilus 或较新版本的 Nemo)。
    • \n
    \n
  • \n
  • MimeType:(必需)缩略图程序将为其生成缩略图的文件的MIME 类型。多个 MIME 类型之间用分号分隔。有关如何获取每个文件的 mime 类型的详细信息,请参阅创建自定义缩略图程序的步骤部分。

    \n
  • \n
\n

密钥注释Exec

\n
    \n
  • 命令中一般只使用%i或之一。%u
  • \n
  • 文字百分比字符被转义为%%(例如,用于50%%50 %)。
  • \n
  • 有关更多详细信息,请参阅桌面条目规范 - Exec 键
  • \n
\n

我们以上面的缩略图条目为例:gdk-pixbuf-thumbnailer用作 JPEG、PNG、GIF 和 TIFF 图像的缩略图程序。如果我们打开一个文件夹,例如,/home/calico/Pictures其中包含image.gif

\n
    \n
  • Nemo(在 Ubuntu 20.04 或更高版本上)将执行以下命令:\n
    /usr/bin/gdk-pixbuf-thumbnailer -s 256 /home/calico/Pictures/image.gif /tmp/.gnome_desktop_thumbnail.1ABC20\n
    Run Code Online (Sandbox Code Playgroud)\n
  • \n
  • Caja 将执行此命令:\n
    /usr/bin/gdk-pixbuf-thumbnailer -s 128 /home/calico/Pictures/image.gif /tmp/.mate_desktop_thumbnail.DE3450\n
    Run Code Online (Sandbox Code Playgroud)\n
  • \n
  • Nautilus(libgnome-desktop3.37.2 或更高版本)将执行以下操作:\n
      \n
    • 创建临时目录:/tmp/gnome-desktop-thumbnailer-67FG80.
    • \n
    • 将该目录挂载/tmp到沙箱中。
    • \n
    • 安装在沙箱中image.gif/tmp/image.gif
    • \n
    • 执行此命令(在沙箱内):\n
      /usr/bin/gdk-pixbuf-thumbnailer -s 256 /tmp/image.gif /tmp/gnome-desktop-thumbnailer.png\n
      Run Code Online (Sandbox Code Playgroud)\n
    • \n
    \n
  • \n
\n

缩略图脚本

\n

从缩略图条目中只执行一个命令:后面的第一个字符串(用空格与其他字符串分隔)Exec=被视为要执行的程序的名称或路径,其后的所有内容都被视为要传递给程序的参数。然而,在很多情况下,需要多个命令来创建正确的缩略图。例如,dwebp可以通过一个命令将 WebP 图像转换为 PNG 格式,但它需要其他程序(例如webpmuxbc)的帮助来计算输出图像的适当宽度和高度。在这种情况下,将使用缩略图脚本。

\n
    \n
  • 缩略图脚本:包含用于创建缩略图的命令的脚本。它可以是 shell 脚本、Python 脚本等,具体取决于所涉及的文件和程序的类型。Shell 脚本非常常用,它们看起来像这样:\n
    /home/calico/Pictures/image.jpg\n/home/calico/Music/Pop Music/audio.mp3\n
    Run Code Online (Sandbox Code Playgroud)\n
  • \n
\n

脚本可以直接用作要执行的程序,也可以用作包含命令的文本文件。例如:

\n
file:///home/calico/Pictures/image.jpg\nfile:///home/calico/Music/Pop%20Music/audio.mp3\n
Run Code Online (Sandbox Code Playgroud)\n
/tmp/gnome-desktop-thumbnailer-XXXXXX/gnome-desktop-thumbnailer.png\n/tmp/.gnome_desktop_thumbnail.XXXXXX\n/tmp/.mate_desktop_thumbnail.XXXXXX\n
Run Code Online (Sandbox Code Playgroud)\n

如果使用 shell 脚本,则脚本路径后面的参数(例如%i%s和)将被分配给脚本中的%o位置参数($1$2、等)。$3

\n

请参阅此答案本文,了解分别为 WebP 图像和 APK 文件创建缩略图的 shell 脚本示例,或参阅本文,了解为 MRC 图像创建缩略图的 Python 脚本示例。

\n

创建自定义缩略图器的步骤

\n
    \n
  1. 查找并安装缩略图程序

    \n

    找到一个可以将您想要缩略图的文件类型转换为 PNG 格式的程序。在安装新程序之前,您可能想尝试预装的缩略图:

    \n
      \n
    • gdk-pixbuf-thumbnailer:GNOME 和基于 GNOME 的桌面上图像的默认缩略图。
    • \n
    • totem-video-thumbnailerffmpegthumbnailer:分别是 GNOME 和 Cinnamon/MATE 桌面上视频的默认缩略图。
    • \n
    • evince-thumbnailerxreader-thumbnaileratril-thumbnailer:分别是 GNOME、Cinnamon 和 MATE 桌面上 PDF 和其他文档文件的默认缩略图。
    • \n
    • gnome-thumbnail-fontmate-thumbnail-font:分别是 GNOME/Cinnamon 和 MATE 桌面上字体的默认缩略图。
    • \n
    \n

    尝试在终端中手动调用它们以从输入文件创建 PNG 图像。例如:

    \n
    cd ~/Pictures\ngdk-pixbuf-thumbnailer -s 256 example.webp out.png\nffmpegthumbnailer -s 256 -i example.webp -o out.png\n
    Run Code Online (Sandbox Code Playgroud)\n

    如果这些程序无法处理您想要缩略图的文件类型,则需要寻找新的缩略图程序。convert(来自imagemagick) 和ffmpeg通常用于支持多种文件格式。您可以使用以下命令安装它们:

    \n
    sudo apt install imagemagick\nsudo apt install ffmpeg\n
    Run Code Online (Sandbox Code Playgroud)\n

    您还可以选择使用专门处理某些类型文件的程序。例如,dwebpopj_decompress分别专门用于解码 WebP 图像和 JPEG-2000 图像。

    \n
  2. \n
  3. 获取MIME 类型要缩略图的文件的

    \n
      \n
    • 右键单击要缩略图的类型的文件,选择“属性”
    • \n
    • “基本”选项卡上,注意“类型”字段。MIME 类型显示在括号中。
    • \n
    \n

    或者,您可以使用xdg-mime. 例如,要获取example.pdfin的 mime 类型~/Documents,请发出以下命令:

    \n
    xdg-mime query filetype ~/Documents/example.pdf\n
    Run Code Online (Sandbox Code Playgroud)\n
  4. \n
  5. 创建缩略图脚本(如果需要)

    \n
      \n
    • 如果需要多个命令或程序来生成文件的缩略图,请使用文本编辑器(例如nano或 )gedit创建包含这些命令的缩略图脚本。
    • \n
    • 如果您使用 Nemo 或 Caja,您可以将脚本放在主目录中的某个位置。但是,如果您使用 Nautilus,则只能将脚本放置在沙盒上安装的目录中(请参阅下面的缩略图问题\xe2\x86\x92由于沙盒缩略图程序而导致缩略图失败)。如果您不确定,/usr/local/bin建议
    • \n
    • 如果脚本要用作程序,则必须使其可执行。例如:\n
      chmod +x /home/calico/Documents/webp-thumbnailer-script\nsudo chmod +x /usr/local/bin/psd-thumbnailer-script\n
      Run Code Online (Sandbox Code Playgroud)\n
    • \n
    \n
  6. \n
\n
    \n
  1. 创建缩略图条目\n
      \n
    • 使用文本编辑器创建缩略图条目(带有.thumbnailer扩展名的文本文件)。为其指定一个描述性名称,例如webp.thumbnailerpsd.thumbnailer

      \n
    • \n
    • 将缩略图条目放置在~/.local/share/thumbnailers或中/usr/share/thumbnailers,以便分别可供当前用户或所有用户使用。如果您打算将其放入/usr/share/thumbnailers强烈建议nano使用创建和编辑条目。例如:

      \n
      sudo nano /usr/share/thumbnailers/webp.thumbnailer\n
      Run Code Online (Sandbox Code Playgroud)\n
    • \n
    • 至于条目的内容(详见上面的Thumbnailer & Thumbnailer Entry):

      \n
        \n
      • 文件的第一行必须是:[Thumbnailer Entry]
      • \n
      • 使用TryExec如果要检查程序或脚本是否存在且可执行,
      • \n
      • 指定要执行的程序的名称或路径以及要在Exec键中传递给它的参数。如果使用缩略图脚本,则它必须是程序或参数(请参阅缩略图脚本)。
      • \n
      • 将步骤 2 中找到的 mime-type 放入密钥中MimeType。如果此键包含多个 mime 类型,请用分号分隔每个类型 (; ) 分隔每个类型,并且可以选择用分号结束键的值。
      • \n
      \n
    • \n
    \n
  2. \n
\n
    \n
  1. 清除旧的缓存缩略图并重新启动文件管理器\n
      \n
    • 创建新的缩略图条目后,应完全关闭文件管理器,以便它可以正确扫描并注册该条目。您可以通过发出以下命令之一来执行此操作:\n
      nautilus -q\nnemo -q\ncaja -q\n
      Run Code Online (Sandbox Code Playgroud)\n
    • \n
    • 接下来,删除失败缩略图的缓存,以强制文件管理器为以前的缩略图程序未能生成缩略图的文件重新生成缩略图:\n
      rm -r ~/.cache/thumbnails/fail\n
      Run Code Online (Sandbox Code Playgroud)\n
    • \n
    • 或者,如果之前使用过未优化的缩略图条目或脚本,则删除所有缓存的缩略图:\n
      rm -r ~/.cache/thumbnails/*\n
      Run Code Online (Sandbox Code Playgroud)\n
    • \n
    • 最后,重新打开文件管理器。密钥中包含 mime 类型的文件MimeType现在应该有缩略图。如果没有,则意味着出了问题,但不用担心,这就是以下部分的目的。
    • \n
    \n
  2. \n
\n

缩略图故障排除

\n

找出缩略图出现问题的最佳方法之一是在启用调试消息的情况下运行文件管理器:

\n
    \n
  • 首先,使用以下命令之一完全关闭文件管理器:\n
    nautilus -q\nnemo -q\ncaja -q\n
    Run Code Online (Sandbox Code Playgroud)\n
  • \n
  • 清除所有缓存的缩略图:\n
    rm -r ~/.cache/thumbnails/*\n
    Run Code Online (Sandbox Code Playgroud)\n
  • \n
  • 从启用了调试代码的终端启动文件管理器:\n\n
  • \n
  • 转到~/.cache/thumbnails,它现在应该是空的。
  • \n
  • 在新选项卡中打开包含要缩略图类型的文件的文件夹。从这里开始,可能会发生三件事:\n
      \n
    • 在 中创建一个large或目录。这意味着缩略图成功并且已为您的文件生成了缩略图。normal~/.cache/thumbnails
    • \n
    • 没有创建目录~/.cache/thumbnails(即目录保持为空)。这意味着键中的命令Exec未执行,因此未创建缩略图。请参阅下一节了解造成这种情况的可能原因。
    • \n
    • fail在 中创建一个目录~/.cache/thumbnails。这意味着文件管理器确实尝试执行密钥中的命令Exec,但有一些东西阻止了缩略图的创建,导致缩略图失败。来自终端的错误消息可能会提供有关出现问题的线索。您还可以在下一节中找到一些常见原因。
    • \n
    \n
  • \n
  • 退出调试模式:\n
      \n
    • Nautilus & Nemo:关闭文件管理器并在终端中按Ctrl+ 。C
    • \n
    • Caja:关闭文件管理器,Enter在终端中按 ,然后键入quit并按Enter
    • \n
    \n
  • \n
\n

笔记:

\n
    \n
  • 对于不提供该--debug选项的旧版本 Nemo,请改用gdb

    \n
    gdb nemo\n
    Run Code Online (Sandbox Code Playgroud)\n
  • \n
  • 如果您在 MATE 会话中使用 Caja(例如在 Ubuntu MATE 上),则必须gdb以 root 身份运行(有关更多详细信息,请参阅此内容):

    \n
    sudo gdb caja\n
    Run Code Online (Sandbox Code Playgroud)\n

    在这种情况下,您只能对/usr/share/thumbnailers主目录外的缩略图条目和缩略图脚本进行故障排除。

    \n

    或者,您可以使用Eclipse来调试 Caja 和缩略图。

    \n
  • \n
\n

缩略图问题

\n

本节讨论几种可能导致没有缩略图缩略图失败的情况。

\n

大文件没有缩略图

\n

Nautilus、Nemo 和 Caja 设置了可缩略图文件的大小限制。大小超过此限制的文件将仅获得通用图标,无论是否存在适合其类型的有效缩略图程序。

\n

要更改此大小限制:

\n
    \n
  • 打开文件管理器,转至首选项\xe2\x86\x92预览(Nemo、Caja)或搜索和预览(Nautilus)选项卡。
  • \n
  • 从“仅适用于小于”的文件中选择文件大小。
  • \n
\n

远程文件没有缩略图

\n

当您通过网络浏览其他计算机上的文件时,Nautilus、Nemo 和 Caja 默认情况下不会为它们创建缩略图。

\n

要启用这些文件的缩略图预览:

\n
    \n
  • 打开文件管理器,转至首选项\xe2\x86\x92预览(Nemo、Caja)或搜索和预览(Nautilus)选项卡。
  • \n
  • 将“显示缩略图”设置为“所有文件” (Nautilus)、“是” (Nemo) 或“始终” (Caja)。
  • \n
\n

某些文件夹中的文件没有缩略图

\n

Nemo可能会禁用某些文件夹中文件的缩略图:

\n
    \n
  • 打开文件夹,然后单击菜单栏中的“查看” 。
  • \n
  • 如果未选中“显示缩略图”,则该文件夹中的文件将禁用缩略图。
  • \n
  • 单击菜单栏中的“编辑” \xe2\x86\x92 “首选项” \xe2\x86\x92 “预览”选项卡。
  • \n
  • 如果选中从父级继承缩略图可见性,则也可能会关闭该文件夹子文件夹中文件的缩略图。
  • \n
\n

要重新启用文件夹中文件的缩略图预览:

\n
    \n
  • 打开该文件夹,然后单击菜单栏中的“查看” 。
  • \n
  • 确保选中显示缩略图。
  • \n
\n

某些文件类型没有缩略图

\n

文件管理器可能会禁用某些 mime 类型的缩略图。要检查是否属于这种情况,请分别为 Nautilus、Nemo 和 Caja 发出以下命令之一:

\n
gsettings get org.gnome.desktop.thumbnailers disable\ngsettings get org.cinnamon.desktop.thumbnailers disable\ngsettings get org.mate.thumbnailers disable\n
Run Code Online (Sandbox Code Playgroud)\n

如果结果是[][\'\'],则文件管理器不会禁用任何文件类型的缩略图。但是,如果括号中包含 mime 类型,例如[\'image/jp2\'][\'image/jp2\', \'application/x-ms-dos-executable\']等,则不会创建这些类型的文件的缩略图。

\n

要启用所有文件类型的缩略图预览,请发出以下命令之一(分别适用于 Nautilus、Nemo 和 Caja):

\n
gsettings set org.gnome.desktop.thumbnailers disable "[]"\ngsettings set org.cinnamon.desktop.thumbnailers disable "[]"\ngsettings set org.mate.thumbnailers disable "[]"\n
Run Code Online (Sandbox Code Playgroud)\n

或者,您可以使用dconf 编辑器

\n
    \n
  • 首先,安装dconf-editor:\n
    sudo apt install dconf-editor\n
    Run Code Online (Sandbox Code Playgroud)\n
  • \n
  • 打开dconf Editor,然后转到以下位置之一(分别针对 Nautilus、Nemo 和 Caja):\n
      \n
    • org \xe2\x86\x92 gnome \xe2\x86\x92桌面\xe2\x86\x92缩略图\xe2\x86\x92禁用.
    • \n
    • org \xe2\x86\x92 cinnamon \xe2\x86\x92桌面\xe2\x86\x92缩略图\xe2\x86\x92禁用.
    • \n
    • org \xe2\x86\x92配合\xe2\x86\x92桌面\xe2\x86\x92缩略图\xe2\x86\x92禁用.
    • \n
    \n
  • \n
  • 关闭使用默认值
  • \n
  • 将“自定义值”框中的值更改为 或[]以便[\'\']为所有文件类型启用缩略图,或者有选择地从列表中删除某些 MIME 类型以仅重新启用这些类型的预览。
  • \n
  • 单击窗口右下角的“应用” 。
  • \n
\n

所有文件都没有缩略图

\n

可能会禁用所有文件的缩略图预览。有两个地方需要检查:

\n
    \n
  • 文件管理器首选项:

    \n
      \n
    • 打开文件管理器,转至首选项\xe2\x86\x92预览(Nemo、Caja)或搜索和预览(Nautilus)选项卡。
    • \n
    • 如果“显示缩略图”设置为“”(Nemo) 或“从不”(Nautilus、Caja),文件管理器将不会创建或显示任何文件的缩略图。
    • \n
    • 要重新启用预览,请将“显示缩略图”设置为“仅本地文件”(Nemo、Caja)或“仅此计算机上的文件” (Nautilus)。或者,您可以将此功能设置为“所有文件” (Nautilus)、“是” (Nemo) 或“始终”(Caja),以预览远程文件。
    • \n
    \n
  • \n
  • 桌面环境设置:

    \n

    分别为 Nautilus、Nemo 和 Caja 发出以下命令之一:

    \n
    gsettings get org.gnome.desktop.thumbnailers disable-all\ngsettings get org.cinnamon.desktop.thumbnailers disable-all\ngsettings get org.mate.thumbnailers disable-all\n
    Run Code Online (Sandbox Code Playgroud)\n

    结果应该是false,这是默认值,但如果是true,则所有缩略图器都将被禁用,因此不会生成任何缩略图。

    \n

    要重新启用缩略图程序,请发出以下命令之一(分别适用于 Nautilus、Nemo 和 Caja):

    \n
    gsettings set org.gnome.desktop.thumbnailers disable-all false\ngsettings set org.cinnamon.desktop.thumbnailers disable-all false\ngsettings set org.mate.thumbnailers disable-all false\n
    Run Code Online (Sandbox Code Playgroud)\n

    或者,您可以使用dconf 编辑器

    \n
      \n
    • 首先,安装dconf-editor:\n
      sudo apt install dconf-editor\n
      Run Code Online (Sandbox Code Playgroud)\n
    • \n
    • 打开dconf Editor,然后转到以下位置之一(分别针对 Nautilus、Nemo 和 Caja):\n
        \n
      • org \xe2\x86\x92 gnome \xe2\x86\x92桌面\xe2\x86\x92缩略图
      • \n
      • org \xe2\x86\x92 cinnamon \xe2\x86\x92桌面\xe2\x86\x92缩略图
      • \n
      • org \xe2\x86\x92配合\xe2\x86\x92桌面\xe2\x86\x92缩略图
      • \n
      \n
    • \n
    • 关闭禁用所有外部缩略图
    • \n
    • 单击窗口右上角的重新加载。
    • \n
    \n
  • \n
\n

由于缺少编解码器而导致缩略图失败

\n

缩略图程序对某些文件类型进行缩略图处理所需的编解码器可能不可用,因为它们未与该程序捆绑在一起或由其依赖项之一提供。例如,totem-video-thumbnailer需要gstreamer1.0-libav缩略图 MP4 和其他视频文件,但gstreamer1.0-libav只是建议的软件包,因此不随totem-video-thumbnailer.

\n

要查找丢失的编解码器,请尝试使用终端中的缩略图程序从要缩略图类型的文件创建 PNG 图像。来自终端的错误消息可能会提供有关转换所需的编解码器库的线索。如果程序有一个verbose选项,您可能希望使用它来获取更多调试信息。例如:

\n
totem-video-thumbnailer --size 256 --verbose in.webp out.png\n
Run Code Online (Sandbox Code Playgroud)\n

另一种方法是尝试建议的软件包,看看它们是否提供所需的编解码器:

\n
    \n
  • 用于apt-cache depends获取建议包的列表。例如:\n
    apt-cache depends totem | grep Suggest\napt-cache depends ffmpegthumbnailer | grep Suggest\n
    Run Code Online (Sandbox Code Playgroud)\n
  • \n
  • 用于apt-cache show获取每个建议包的信息。例如:\n
    apt-cache show gstreamer1.0-libav\napt-cache show gstreamer1.0-plugins-bad\n
    Run Code Online (Sandbox Code Playgroud)\n
  • \n
  • 如果这些信息无法帮助您确定哪个软件包包含编解码器,您可能需要尝试一一安装建议的软件包。
  • \n
\n

应该注意的是,也有可能该编解码器在官方存储库中不可用,或者相关程序根本不支持您尝试缩略图的文件类型。在这种情况下,建议访问该程序的官方网站以获取有关支持格式的更多信息或仅使用其他缩略图。

\n

由于文件扩展名不正确而导致缩略图失败

\n

您尝试预览的文件可能具有不正确的文件扩展名,这会导致调用不适当的缩略图程序来对其进行缩略图处理。举个例子,我曾经有一些带有.jpg扩展名的文件,但它们实际上是 WebP 图像。不管怎样,文件管理器将它们视为 JPEG 图像,并将它们传递给gdk-pixbuf-thumbnailer. 由于该程序无法处理 WebP 图像,因此缩略图失败。

\n

要解决此问题,您需要使用该file工具获取这些文件的真实类型并相应地重命名它们。image.png例如,要检查in的类型~/Pictures,请发出以下命令:

\n
file ~/Pictures/image.png\n
Run Code Online (Sandbox Code Playgroud)\n

如果文件确实是 PNG 图像,则输出将类似于以下内容:

\n
/home/calico/Pictures/image.png: PNG image data, 1024 x 640, 8-bit/color RGB, non-interlaced\n
Run Code Online (Sandbox Code Playgroud)\n

file扫描文件的内容以确定其类型时,即使您尝试为文件提供不同的扩展名,结果也将是相同的:

\n
/home/calico/Pictures/image.png.gif: PNG image data, 1024 x 640, 8-bit/color RGB, non-interlaced\n
Run Code Online (Sandbox Code Playgroud)\n

有趣的是,如果您在更改扩展名之前和之后检查文件的 mime-type xdg-mime,将会出现两种不同的结果:

\n
$ xdg-mime query filetype ~/Pictures/image.png\nimage/png\n$ mv ~/Pictures/image.png ~/Pictures/image.png.gif\n$ xdg-mime query filetype ~/Pictures/image.png.gif\nimage/gif\n
Run Code Online (Sandbox Code Playgroud)\n

由于无法识别图像文件格式而导致缩略图失败

\n

从Thumbnailer 和 Thumbnailer Entry部分可以看出,Nemo 和 Caja(以及旧版本的 Nautilus)为每个输出缩略图提供了一个随机.XXXXXX后缀,而不是图像扩展名。如果缩略图程序不默认以 PNG 格式(或 支持的格式gdk-pixbuf-thumbnailer)写入文件,则它将无法为这些文件管理器创建缩略图。

\n

幸运的是,设计为缩略图的程序(例如ffmpegthumbnailertotem-video-thumbnailer)通常默认创建 PNG 缩略图。对于不默认这样做的其他程序,必须显式指定输出文件的格式以确保生成有效的缩略图。

\n

最好程序有一个方便的选项来指定格式。例如,convert具有png:ffmpeg具有-f apng

\n
/usr/bin/gdk-pixbuf-thumbnailer -s 256 /home/calico/Pictures/image.gif /tmp/.gnome_desktop_thumbnail.1ABC20\n
Run Code Online (Sandbox Code Playgroud)\n
/usr/bin/gdk-pixbuf-thumbnailer -s 128 /home/calico/Pictures/image.gif /tmp/.mate_desktop_thumbnail.DE3450\n
Run Code Online (Sandbox Code Playgroud)\n

对于没有此类选项的程序,通用解决方案是首先为输出文件指定后缀.png,然后将其重命名为文件管理器给出的原始文件名。这可以在 shell 脚本中完成。例如:

\n
/usr/bin/gdk-pixbuf-thumbnailer -s 256 /tmp/image.gif /tmp/gnome-desktop-thumbnailer.png\n
Run Code Online (Sandbox Code Playgroud)\n

尽管输出图像文件可以是任何支持的格式gdk-pixbuf-thumbnailer(JPEG、PNG、BMP、GIF、TGA 等),但出于安全原因,建议以 PNG 格式创建缩略图。

\n

由于沙盒缩略图


归档时间:

查看次数:

6453 次

最近记录:

3 年,11 月 前