我有许多 JPEG-2000.jp2
和.j2k
图像需要在 Nautilus 或 Nemo 上预览。我该如何让文件管理器为这些文件创建缩略图?
答案1
一些适用于 Nautilus、Nemo 和 Caja 的 JPEG-2000 图像预览方法。
方法 1:使用opj_decompress
安装
libopenjp2-tools
sudo apt install libopenjp2-tools
此软件包附带了将 JP2 和 J2K 图像转换为 PNG 缩略图所需的工具和编解码器,即
opj_decompress
、opj_dump
和libopenjp2-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
更适合缩略图的大小。
获取mime 类型JP2 和 J2K 图像
- 右键单击 JP2 或 J2K 图像,选择特性。
- 在基本的选项卡中,注意括号中的内容类型字段。就我的情况 (Ubuntu 20.04) 而言,它
image/jp2
适用于 JP2 图像以及image/x-jp2-codestream
J2K 和 J2C 图像。
或者,您可以使用
xdg-mime
来获取这些 mime 类型。例如,如果您在 中有example.jp2
和,请发出以下命令:example.j2k
~/Pictures
xdg-mime query filetype ~/Pictures/example.jp2 xdg-mime query filetype ~/Pictures/example.j2k
创建一个缩略图脚本适用于 JP2 和 J2K 图像
jp2-thumbnailer-bin
创建一个名为的文件/usr/local/bin
:sudo nano /usr/local/bin/jp2-thumbnailer-bin
- 复制以下脚本(基于这)进入文件(使用Ctrl+C复制,使用 ++Ctrl粘贴到窗口):
ShiftV
nano
#!/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+O和Enter保存文件,按Ctrl+X退出
nano
并返回终端。 - 接下来,使用以下命令使文件可执行:
sudo chmod +x /usr/local/bin/jp2-thumbnailer-bin
笔记:如果您使用 Nemo 或 Caja,您实际上可以将脚本放在主目录中的某个位置(例如
~/.local/bin
),然后运行上述命令而无需。但是,如果您使用 Nautilus,则只有在 Nautilus 使用的版本早于以下版本sudo
时,您才能这样做。libgnome-desktop
3.28.2。要获取 的版本号libgnome-desktop
,请发出以下命令:apt list --installed | grep libgnome-desktop | cut -d ' ' -f 2 | cut -d '-' -f 1
创建一个缩略图条目适用于 JP2 和 J2K 图像
- 首先,创建一个名为的文件
thumbnailers
夹~/.local/share
。mkdir -p ~/.local/share/thumbnailers
jp2.thumbnailer
在该文件夹中 创建一个名为的文件。nano ~/.local/share/thumbnailers/jp2.thumbnailer
- 将这些行复制到文件中(使用Ctrl+C复制,使用 ++Ctrl粘贴到窗口中):
ShiftV
nano
[Thumbnailer Entry] Exec=/usr/local/bin/jp2-thumbnailer-bin %i %s %o MimeType=image/jp2;image/x-jp2-codestream;
- 按Ctrl+O和Enter保存文件,按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
使用强烈推荐。
- 首先,创建一个名为的文件
启用缩略图对于 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 编辑器。
- 首先,安装
清除旧的缓存缩略图并重新启动文件管理器
- 首先,使用以下命令之一完全关闭文件管理器:
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 图像创建缩略图。
安装
imagemagick
提供convert
工具sudo apt install imagemagick
获取mime 类型JP2 和 J2K 图像(见使用 opj_decompress, 第2步)
创建一个缩略图条目对于 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;
启用缩略图对于 JP2 图像(见使用 opj_decompress,步骤 5)
清除旧的缓存缩略图并重新启动文件管理器(参见使用 opj_decompress,步骤 6)
方法 3:使用gm
gm
在 Ubuntu 14.04 和 16.04 上支持 JPEG-2000 图像。
安装
graphicsmagick
提供gm
工具sudo apt install graphicsmagick
获取mime 类型JP2 和 J2K 图像(见使用 opj_decompress, 第2步)
创建一个缩略图条目对于 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;
启用缩略图对于 JP2 图像(见使用 opj_decompress,步骤 5)
清除旧的缓存缩略图并重新启动文件管理器(参见使用 opj_decompress,步骤 6)
方法 4:使用totem-video-thumbnailer
totem-video-thumbnailer
可以在 Ubuntu 18.04 及更高版本上缩略图 JP2 和 J2K 图像。
安装
totem
和gstreamer1.0-plugins-bad
sudo apt install totem gstreamer1.0-plugins-bad
totem
提供totem-video-thumbnailer
,同时gstreamer1.0-plugins-bad
附带totem-video-thumbnailer
处理JP2 和J2K图像所需的编解码器。笔记:
totem
gstreamer1.0-plugins-bad
是GNOME 桌面上的默认视频播放器,因此它已预安装在 Ubuntu 上。不是预装,但可能是因为它只是一个建议的包裹totem
。获取mime 类型JP2 和 J2K 图像(见使用 opj_decompress, 第2步)
创建一个缩略图条目对于 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;
启用缩略图对于 JP2 图像(见使用 opj_decompress,步骤 5)
清除旧的缓存缩略图并重新启动文件管理器(参见使用 opj_decompress,步骤 6)
方法 5:使用ffmpeg
ffmpeg
在 Ubuntu 16.04 及更高版本上支持 JP2 和 J2K 图像。
安装
ffmpeg
sudo apt install ffmpeg
获取mime 类型JP2 和 J2K 图像(见使用 opj_decompress, 第2步)
创建一个缩略图条目对于 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;
启用缩略图对于 JP2 图像(见使用 opj_decompress,步骤 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