Как просмотреть изображения DDS и WEBP на nautilus?
У меня слишком много картинок для визуального поиска, поэтому я не могу открыть каждое из них по отдельности.
Что мне нужно сделать или установить, чтобы показать превью изображений DDS на nautilus?
Я хотел бы просмотреть веб-сайт тоже, если это возможно.
7 ответов
Создавать файлы в /usr/share/thumbnailers
с этими именами и содержанием:
ДДС
отсюда:
dds.thumbnailer
[Thumbnailer Entry]
Exec=/usr/bin/convert -thumbnail x%s %i png:%o
MimeType=image/x-dds;
WebP
на основании этого:
webp.thumbnailer
[Thumbnailer Entry]
Exec=/usr/bin/dwebp %i -scale 100 100 -o %o
MimeType=image/x-webp;image/webp;
и перезапустите наутилус после полного выхода с nautilus -q
Obs.: проблема с этим подходом webp состоит в том, что все миниатюры будут 100x100. Но этот скрипт заставляет его работать правильно.
Достаточно подробное руководство по предварительному просмотру изображений WebP на Nautilus ( на основе ответа и сценария, предложенного @AquariusPower):
1. Установите
webp
пакет
sudo apt-get install webp
В этот пакет входит
vwebp
а также
dwebp
инструменты, которые будут использоваться для преобразования изображений WebP в более мелкие миниатюры PNG.
2. Проверьте
MimeType
файлов WebP
- Щелкните правой кнопкой мыши изображение WebP в диспетчере файлов (Nautilus, Nemo и т. Д.), Выберите " Свойства";
- На вкладке " Основные " перейдите к строке " Тип" и посмотрите, что находится в скобках справа. Это обычно
image/webp
но это также может бытьimage/x-webp
,audio/x-riff
, или в моем случае этоapplication/x-wine-extension-webp
(потому что я использую программу просмотра изображений Windows с Wine для просмотра WebP); Помни этоMimeType
, он будет использоваться вскоре после этого.
3. Создайте файл с именем
webp-thumbnailer-bin
в
/usr/bin
sudo nano /usr/bin/webp-thumbnailer-bin
Скопируйте следующий скрипт в файл (используйте
Ctrl
+C
копировать,
Ctrl
+Shift
+V
вставить в
nano
окно):
#!/bin/bash
strInFile="$1"
nMaxDimension="$2"
strOutFile="$3"
strInfo="`DISPLAY=NONE vwebp -info "$strInFile"`"
strSize="`echo "$strInfo" | grep Canvas | sed -r 's"Canvas: (.*) x (.*)"\1\t\2"'`"
nWidth="`echo "$strSize" | cut -f1`"
nHeight="`echo "$strSize" | cut -f2`"
if((nWidth>nHeight));then
nNewWidth=$nMaxDimension
nNewHeight=`bc <<< "scale=10;f=$nHeight*($nNewWidth/$nWidth);scale=0;f/1"`
else
nNewHeight=$nMaxDimension
nNewWidth=`bc <<< "scale=10;f=$nWidth*($nNewHeight/$nHeight);scale=0;f/1"`
fi
/usr/bin/dwebp "$strInFile" -scale $nNewWidth $nNewHeight -o "$strOutFile"
Нажмите
Ctrl
+O
(письмо
O
не число ноль
0
) а также
Enter
чтобы сохранить файл, и
Ctrl
+X
выйти
nano
и вернитесь в терминал.
Этот скрипт вводит файл WebP, извлекает его размеры (ширину и высоту) с помощью
vwebp
, и использует эти значения в качестве входных для
dwebp
для преобразования и масштабирования файла WebP в уменьшенное изображение PNG с исходным соотношением сторон.
Затем сделайте файл исполняемым:
sudo chmod +x /usr/bin/webp-thumbnailer-bin
4. Создайте
webp.thumbnailer
файл в
/usr/share/thumbnailers
sudo nano /usr/share/thumbnailers/webp.thumbnailer
Скопируйте следующее содержимое в файл (используйте
Ctrl
+C
копировать,
Ctrl
+Shift
+V
вставить в
nano
окно):
[Thumbnailer Entry]
Exec=/usr/bin/webp-thumbnailer-bin %i 256 %o
MimeType=image/webp;image/x-webp;audio/x-riff;application/x-wine-extension-webp;
Помните
MimeType
? If the type you checked earlier is not in the third line listed above, add it to the end of the line. Make sure to end the line with a semicolon (;
).Also, you can change
256
in the second line to128
for even smaller thumbnails (though256
is recommended as it's the default large thumbnail size for Nautilus).
Again, press
Ctrl
+O
and
Enter
to save the file, and
Ctrl
+X
to exit
nano
and return to the terminal.
5. (last) Clear thumbnail cache and regenerate thumbnails
Issue the following 4 commands in terminal, press
Enter
after each line:
rm ~/.cache/thumbnails/fail/gnome-thumbnail-factory/*
rm ~/.cache/thumbnails/large/*
rm ~/.cache/thumbnails/normal/*
nautilus -q
If you use
nemo
, the last command should benemo -q
.Instead of using the terminal, you can delete the cache manually by going to
~/.cache/thumbnails
and delete all 3 folders inside it (fail
,large
,normal
).Наконец, снова откройте Nautilus или Nemo, теперь должны отображаться все изображения WebP.
Протестировано на Ubuntu 16.04, Linux Mint 19.3 Cinnamon.
Обновление: это работает и на Ubuntu 20.04.
Другие решения не работали на моем Ubuntu 20.04, и (после некоторой проверки) я обнаружил, что Nautilus запускает миниатюры через
bwrap
эти дни.
Однако,
/usr/bin/convert
на моем компе есть символическая ссылка на
/etc/alternatives/convert
который, в свою очередь, связан с
/usr/bin/convert-im6.q16
. Проблема в том, что
/etc
в целом не связано
bwrap
поскольку он используется Nautilus, окончательный путь не будет найден.
Это работает для меня, но вам может потребоваться настроить точный путь
convert
:
[Thumbnailer Entry]
Exec=/usr/bin/convert-im6.q16 -thumbnail %s %i %o
MimeType=image/x-webp;image/webp;image/x-dds;
Я следовал инструкциям @CalicoCat по созданию миниатюр для статических изображений WebP и внес изменения в код, чтобы создавать миниатюры для анимированных изображений WebP. Протестировано на Linux Mint 20.1. На третьем шаге @CalicoCat измените код на приведенный ниже.
1. Отредактируйте файл (или создайте, если он отсутствует)
sudo nano /usr/bin/webp-thumbnailer-bin
и замените код на приведенный ниже
#!/bin/bash
strInFile="$1"
nMaxDimension="$2"
strOutFile="$3"
strInfo="`DISPLAY=NONE vwebp -info "$strInFile"`"
strSize="`echo "$strInfo" | grep Canvas | sed -r 's"Canvas: (.*) x (.*)"\1\t\2"'`"
nImgC="`echo "$strInfo" | grep VP8X | sed -r 's"VP8X: Found (.*) images in file \(loop count = (.*)\)"\1"'`"
nWidth="`echo "$strSize" | cut -f1`"
nHeight="`echo "$strSize" | cut -f2`"
if((nWidth>nHeight));then
nNewWidth=$nMaxDimension
nNewHeight=`bc <<< "scale=10;f=$nHeight*($nNewWidth/$nWidth);scale=0;f/1"`
else
nNewHeight=$nMaxDimension
nNewWidth=`bc <<< "scale=10;f=$nWidth*($nNewHeight/$nHeight);scale=0;f/1"`
fi
if [ "$nImgC" -eq 1 ]; then
/usr/bin/dwebp "$strInFile" -scale $nNewWidth $nNewHeight -o "$strOutFile"
else
/usr/bin/webpmux -get frame 1 "$strInFile" -o - | /usr/bin/dwebp -scale $nNewWidth $nNewHeight -o "$strOutFile" -- -
fi
Если вы раньше не следовали инструкциям @CalicoCat, вам необходимо выполнить другие шаги, описанные ниже.
2. Далее делаем файл исполняемым
sudo chmod +x /usr/bin/webp-thumbnailer-bin
3. Затем создайте файл webp.thumbnailer в
/usr/share/thumbnailers
sudo nano /usr/share/thumbnailers/webp.thumbnailer
4. Скопируйте следующее содержимое в файл
[Thumbnailer Entry]
Exec=/usr/bin/webp-thumbnailer-bin %i 256 %o
MimeType=image/webp;image/x-webp;audio/x-riff;application/x-wine-extension-webp;
5. Наконец, очистите кеш миниатюр и восстановите миниатюры.
Для Наутилуса:
rm ~/.cache/thumbnails/fail/gnome-thumbnail-factory/*
rm ~/.cache/thumbnails/large/*
rm ~/.cache/thumbnails/normal/*
nautilus -q
или для Немо
rm ~/.cache/thumbnails/fail/gnome-thumbnail-factory/*
rm ~/.cache/thumbnails/large/*
rm ~/.cache/thumbnails/normal/*
nemo -q
Объяснение изменений, которые я сделал из ответа @CalicoCat:
я добавил переменную
nImgC
который получает количество кадров из файла WebP. Если есть только один кадр, то изображение WebP является статическим. В противном случае изображение WebP анимировано. Поэтому мы используем для извлечения первого кадра, а затем сохраняем его в виде пригодной для использования миниатюры.
Для миниатюры анимированного изображения WebP я использую самый первый кадр, потому что использование любого другого кадра может привести к появлению артефактов на миниатюре (
-get frame 1
это первый кадр, и
-get frame 0
зарезервирован для получения последнего кадра, в котором часто отсутствуют пиксели из-за сжатия некоторых анимаций).
Спасибо @ColioCat за помощь
Спасибо @ColioCat за отключение двух ненужных вызовов cut и упрощение кода с небольшим добавлением.
/usr/bin/webpmux -get frame 1 "$strInFile" -o - | /usr/bin/dwebp -scale $nNewWidth $nNewHeight -o "$strOutFile" -- -
Приведенный выше код заменил приведенный ниже код, в котором мы сначала должны были написать наш
webpmux
захватил кадр на диск, используйте его в
dwebp
преобразовать его во что-то, что можно использовать
nautilus
или же
nemo
, а затем удалите его. Как и было предложено, я оставляю исходный фрагмент кода здесь.
/usr/bin/webpmux -get frame 1 "$strInFile" -o "$strOutFile".temp
/usr/bin/dwebp "$strOutFile".temp -scale $nNewWidth $nNewHeight -o "$strOutFile"
rm "$strOutFile".temp
Теперь есть гораздо более простое решение:
sudo apt install webp-pixbuf-loader
И это все. Не нужно даже перезапускать Наутилус!
ImageMagick имеет возможность конвертировать изображения webp и dds. Полный список поддерживаемых форматов находится здесь Форматы ImageMagick.
Помните, что для этого вам необходимо сначала установить ImageMagick.
Теперь вы можете добавить webp.thumbnailer
файл в /usr/share/thumbnailers
с этими строками:
[Thumbnailer Entry]
Exec=/usr/bin/magick %i -thumbnail %s %o
MimeType=image/x-webp;image/webp;image/x-dds;
И, наконец, очистите кешированные миниатюры с помощью следующих команд:
rm ~/.cache/thumbnails/fail/gnome-thumbnail-factory/*
rm ~/.cache/thumbnails/large/*
rm ~/.cache/thumbnails/normal/*
nautilus -q
Из Википедии Вебп. Являясь производным от видеоформата VP8, он является дочерним проектом формата мультимедийных контейнеров WebM. Поэтому я попробовал totem-video-thumbnailer, и он работает.
[Thumbnailer Entry]
TryExec=/usr/bin/totem-video-thumbnailer
Exec=/usr/bin/totem-video-thumbnailer -s %s %u %o
MimeType=image/webp;image/x-webp;