Как просмотреть изображения 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 to 128 for even smaller thumbnails (though 256 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 be nemo -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; 
Другие вопросы по тегам