如何在 Nautilus 和 Nemo 上预览 JP2 和 J2K 图像?

如何在 Nautilus 和 Nemo 上预览 JP2 和 J2K 图像?

我有许多 JPEG-2000.jp2.j2k图像需要在 Nautilus 或 Nemo 上预览。我该如何让文件管理器为这些文件创建缩略图?

答案1

一些适用于 Nautilus、Nemo 和 Caja 的 JPEG-2000 图像预览方法。

方法 1:使用opj_decompress


  1. 安装libopenjp2-tools

    sudo apt install libopenjp2-tools
    

    此软件包附带了将 JP2 和 J2K 图像转换为 PNG 缩略图所需的工具和编解码器,即opj_decompressopj_dumplibopenjp2-7

    笔记:

    • libopenjp2-tools在 Ubuntu 14.10 及更早版本上不可用。
    • 如果您使用的是 Ubuntu 18.04 或更高版本,则可能必须安装libgdk-pixbuf2.0-bin(通常是预先安装的):
      sudo apt install libgdk-pixbuf2.0-bin
      
      该包提供gdk-pixbuf-thumbnailer用于将生成的 PNG 调整为opj_decompress更适合缩略图的大小。
  2. 获取mime 类型JP2 和 J2K 图像

    • 右键单击 JP2 或 J2K 图像,选择特性
    • 基本的选项卡中,注意括号中的内容类型字段。就我的情况 (Ubuntu 20.04) 而言,它image/jp2适用于 JP2 图像以及image/x-jp2-codestreamJ2K 和 J2C 图像。

    或者,您可以使用xdg-mime来获取这些 mime 类型。例如,如果您在 中有example.jp2和,请发出以下命令:example.j2k~/Pictures

    xdg-mime query filetype ~/Pictures/example.jp2
    xdg-mime query filetype ~/Pictures/example.j2k
    
  3. 创建一个缩略图脚本适用于 JP2 和 J2K 图像

    • jp2-thumbnailer-bin创建一个名为的文件/usr/local/bin
      sudo nano /usr/local/bin/jp2-thumbnailer-bin
      
    • 复制以下脚本(基于)进入文件(使用Ctrl+C复制,使用 ++Ctrl粘贴到窗口): ShiftVnano
      #!/bin/bash
      
      sInFile="$1"
      nThumbSize="$2"
      sOutFile="$3"
      
      # Get the dimensions of the input image
      sInfo="$(opj_dump -i "$sInFile")"
      sSize="$(echo "$sInfo" | grep x1 | sed -r 's|.*x1=(.*), y1=(.*)|\1\t\2|')"
      nWidth="$(echo "$sSize" | cut --fields=1)"
      nHeight="$(echo "$sSize" | cut --fields=2)"
      
      # Get the large dimension of the input image
      if((nWidth>nHeight)); then
          nLargeSize="$nWidth"
      else
          nLargeSize="$nHeight"
      fi
      
      # Generate output thumbnail;
      # Images larger than the default thumbnail size (256x256 or
      # 128x128 pixels) are scaled down so their large dimension
      # is at most 256 or 128 pixels. This significantly reduces
      # thumbnail generation time.
      if((nLargeSize<=nThumbSize)); then
          /usr/bin/opj_decompress -i "$sInFile" -o "$sOutFile".png
      else
          nResolutions="$(echo "$sInfo" | grep numresolutions | cut --delimiter='=' --fields=2 | sort --general-numeric-sort | sed 1q)"
          nReduce="$(echo "f=l($nLargeSize/$nThumbSize)/l(2);scale=0;f/1" | bc -l)"
          if((nReduce<nResolutions)); then
              nReduceFactor="$nReduce"
          else
              nReduceFactor="$((nResolutions-1))"
          fi
          /usr/bin/opj_decompress -i "$sInFile" -r "$nReduceFactor" -o "$sOutFile".png
      fi
      if [[ -e /usr/bin/gdk-pixbuf-thumbnailer ]]; then
          /usr/bin/gdk-pixbuf-thumbnailer -s "$nThumbSize" "$sOutFile".png "$sOutFile"
          rm "$sOutFile".png
      else
          mv "$sOutFile".png "$sOutFile"
      fi
      
    • Ctrl+OEnter保存文件,按Ctrl+X退出nano并返回终端。
    • 接下来,使用以下命令使文件可执行:
      sudo chmod +x /usr/local/bin/jp2-thumbnailer-bin
      

    笔记:如果您使用 Nemo 或 Caja,您实际上可以将脚本放在主目录中的某个位置(例如 ~/.local/bin),然后运行上述命令而无需。但是,如果您使用 Nautilus,则只有在 Nautilus 使用的版本早于以下版本sudo时,您才能这样做。libgnome-desktop3.28.2。要获取 的版本号libgnome-desktop,请发出以下命令:

    apt list --installed | grep libgnome-desktop | cut -d ' ' -f 2 | cut -d '-' -f 1
    
  4. 创建一个缩略图条目适用于 JP2 和 J2K 图像

    • 首先,创建一个名为的文件thumbnailers~/.local/share
      mkdir -p ~/.local/share/thumbnailers
      
    • jp2.thumbnailer在该文件夹中 创建一个名为的文件。
      nano ~/.local/share/thumbnailers/jp2.thumbnailer
      
    • 将这些行复制到文件中(使用Ctrl+C复制,使用 ++Ctrl粘贴到窗口中): ShiftVnano
      [Thumbnailer Entry]
      Exec=/usr/local/bin/jp2-thumbnailer-bin %i %s %o
      MimeType=image/jp2;image/x-jp2-codestream;
      
    • Ctrl+OEnter保存文件,按Ctrl+X退出nano

    笔记:

    • 将先前找到的 mime 类型放在上面列出的第三行(关键MimeType)中;用分号(;)分隔每个 mime 类型,并可选择用分号结束该行。
    • 如果您希望所有用户都可以看到 JP2 和 J2K 图像的缩略图,请将此缩略图条目放入/usr/share/thumbnailers而不是~/.local/share/thumbnailers
      sudo nano /usr/share/thumbnailers/jp2.thumbnailer
      
    • 也可以使用GUI 文本编辑器(如gedit或 )xed来创建和编辑缩略图条目。但是,如果您打算将其放在 中/usr/share/thumbnailers,则nano使用强烈推荐
  5. 启用缩略图对于 JP2 图像

    文件管理器可能会禁用 JP2 图像的缩略图。要检查是否是这种情况,请分别针对 Nautilus、Nemo 和 Caja 发出以下命令之一:

    gsettings get org.gnome.desktop.thumbnailers disable
    gsettings get org.cinnamon.desktop.thumbnailers disable
    gsettings get org.mate.thumbnailers disable
    

    如果结果为[][''],则文件管理器不会禁用任何文件类型的缩略图(您可以直接转到步骤 6)。但是,如果结果为['image/jp2'],则 JP2 图像的缩略图被禁用。要重新启用它,请发出以下命令之一(分别针对 Nautilus、Nemo 和 Caja):

    gsettings set org.gnome.desktop.thumbnailers disable "[]"
    gsettings set org.cinnamon.desktop.thumbnailers disable "[]"
    gsettings set org.mate.thumbnailers disable "[]"
    

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

    • 首先,安装dconf-editor
      sudo apt install dconf-editor
      
    • 打开dconf 编辑器,然后前往以下其中一个地方(分别针对 Nautilus、Nemo 和 Caja):
      • 组织侏儒桌面缩略图制作者禁用
      • 组织肉桂桌面缩略图制作者禁用
      • 组织伴侣桌面缩略图制作者禁用
    • 使用默认值
    • 更改自定义值框从['image/jp2'][]['']
    • 点击申请右下角,然后关闭dconf 编辑器
  6. 清除旧的缓存缩略图并重新启动文件管理器

    • 首先,使用以下命令之一完全关闭文件管理器:
      nautilus -q
      nemo -q
      caja -q
      
    • 接下来,删除缓存的失败缩略图:
      rm -r ~/.cache/thumbnails/fail
      
    • 或者,删除所有缓存的缩略图(如果您以前使用未优化的缩略图条目或创建大缩略图的脚本):
      rm -r ~/.cache/thumbnails/*
      
    • 最后,重新打开文件管理器。JP2 和 J2K 图像现在应该有缩略图了。

方法 2:使用convert


convert可用于在 Ubuntu 14.04 或 Ubuntu 20.10 及更高版本上为 JP2 和 J2K 图像创建缩略图。

  1. 安装imagemagick提供convert工具

    sudo apt install imagemagick
    
  2. 获取mime 类型JP2 和 J2K 图像(见使用 opj_decompress, 第2步)

  3. 创建一个缩略图条目对于 JP2 和 J2K 图像(见使用 opj_decompress,详情请参阅步骤 4)

    缩略图程序的内容~/.local/share/thumbnailers/jp2.thumbnailer如下:convert

    [Thumbnailer Entry]
    Exec=/usr/bin/convert %i -thumbnail %sx%s png:%o
    MimeType=image/jp2;image/x-jp2-codestream;
    
  4. 启用缩略图对于 JP2 图像(见使用 opj_decompress,步骤 5)

  5. 清除旧的缓存缩略图并重新启动文件管理器(参见使用 opj_decompress,步骤 6)

方法 3:使用gm


gm在 Ubuntu 14.04 和 16.04 上支持 JPEG-2000 图像。

  1. 安装graphicsmagick提供gm工具

    sudo apt install graphicsmagick
    
  2. 获取mime 类型JP2 和 J2K 图像(见使用 opj_decompress, 第2步)

  3. 创建一个缩略图条目对于 JP2 和 J2K 图像(见使用 opj_decompress,详情请参阅步骤 4)

    缩略图程序的内容~/.local/share/thumbnailers/jp2.thumbnailer如下:gm

    [Thumbnailer Entry]
    Exec=/usr/bin/gm convert %i -thumbnail %sx%s png:%o
    MimeType=image/jp2;image/x-jp2-codestream;
    
  4. 启用缩略图对于 JP2 图像(见使用 opj_decompress,步骤 5)

  5. 清除旧的缓存缩略图并重新启动文件管理器(参见使用 opj_decompress,步骤 6)

方法 4:使用totem-video-thumbnailer


totem-video-thumbnailer可以在 Ubuntu 18.04 及更高版本上缩略图 JP2 和 J2K 图像。

  1. 安装totemgstreamer1.0-plugins-bad

    sudo apt install totem gstreamer1.0-plugins-bad
    

    totem提供totem-video-thumbnailer,同时gstreamer1.0-plugins-bad附带totem-video-thumbnailer处理JP2 和J2K图像所需的编解码器。

    笔记: totemgstreamer1.0-plugins-bad是GNOME 桌面上的默认视频播放器,因此它已预安装在 Ubuntu 上。不是预装,但可能是因为它只是一个建议的包裹totem

  2. 获取mime 类型JP2 和 J2K 图像(见使用 opj_decompress, 第2步)

  3. 创建一个缩略图条目对于 JP2 和 J2K 图像(见使用 opj_decompress,详情请参阅步骤 4)

    缩略图程序的内容~/.local/share/thumbnailers/jp2.thumbnailer如下:totem-video-thumbnailer

    [Thumbnailer Entry]
    Exec=/usr/bin/totem-video-thumbnailer -s %s %u %o
    MimeType=image/jp2;image/x-jp2-codestream;
    
  4. 启用缩略图对于 JP2 图像(见使用 opj_decompress,步骤 5)

  5. 清除旧的缓存缩略图并重新启动文件管理器(参见使用 opj_decompress,步骤 6)

方法 5:使用ffmpeg


ffmpeg在 Ubuntu 16.04 及更高版本上支持 JP2 和 J2K 图像。

  1. 安装ffmpeg

    sudo apt install ffmpeg
    
  2. 获取mime 类型JP2 和 J2K 图像(见使用 opj_decompress, 第2步)

  3. 创建一个缩略图条目对于 JP2 和 J2K 图像(见使用 opj_decompress,详情请参阅步骤 4)

    缩略图程序的内容~/.local/share/thumbnailers/jp2.thumbnailer如下:ffmpeg

    [Thumbnailer Entry]
    Exec=/usr/bin/ffmpeg -y -i %i -filter scale=%s:%s:force_original_aspect_ratio=1 -f apng %o
    MimeType=image/jp2;image/x-jp2-codestream;
    
  4. 启用缩略图对于 JP2 图像(见使用 opj_decompress,步骤 5)

  5. 清除旧的缓存缩略图并重新启动文件管理器(参见使用 opj_decompress,步骤 6)

概括


已测试 → Ubuntu 14.04 Ubuntu 16.04 Ubuntu 18.04、20.04;Linux Mint 20 Cinnamon;Ubuntu MATE 20.04 Ubuntu 20.10、21.04
opj_解压缩 不适用 ✔️ ✔️ ✔️
转变 ✔️ ❌️ ❌️ ✔️
通用汽车 ✔️ ✔️ ❌️ ❌️
totem-video-缩略图 ❌️ ❌️ ✔️ ✔️
ffmpeg 不适用 ✔️ ✔️ ✔️

笔记:建议使用opj_decompress或,因为它们提供更快的解压缩速度并生成更小的缩略图。totem-video-thumbnailer

相关内容