how to preview DDS and WEBP images on nautilus?

I have too many images to search at visually, so I cannot open each one of them individually.

What I have to do or install to шоу DDS images previews on nautilus?

I would like to preview webp too if possible.

7
задан 6 June 2015 в 23:39

5 ответов

создайте файлы в /usr/share/thumbnailers с этими именами и содержанием:

DDS
от здесь :

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. Но этот сценарий заставляет его работать правильно.

13
ответ дан 23 November 2019 в 06:18

Достаточно подробное руководство по предварительному просмотру изображений WebP в Nautilus (файлы GNOME) и файловых менеджерах на основе Nautilus (Nemo, Caja).

Первоначально в этом ответе описывалось только использование dwebp для создания эскизов для изображений WebP на основе ответа и сценария, предложенного Aquarius Power . После некоторого исследования я нашел больше методов для предварительного просмотра WebP, а также различные подробности о процессе создания эскизов , которые могут заставить методы других пользователей работать не только в Nautilus, но также в Nemo и Caja. Затем этот ответ обновляется, чтобы подробно обсудить все эти методы.

Метод 1. Используйте dwebp и webpmux


  1. Установите webp

     sudo apt install webp
    

    Этот пакет предоставляет инструменты dwebp и webpmux , которые будут использоваться для преобразования изображений WebP в уменьшенные эскизы PNG.

  2. Получите mime-тип изображений WebP

    • Щелкните правой кнопкой мыши файл WebP, выберите Свойства .
    • На вкладке Основные обратите внимание на то, что указано в скобках для поля Тип .Обычно это image / webp или image / x-webp , но это также может быть audio / x-riff (в более старых версиях, таких как Ubuntu 14.04) или даже application / x-wine-extension-webp (если вы используете приложение Wine для открытия изображений WebP в более старых версиях).

    В качестве альтернативы можно использовать xdg-mime . Например, чтобы получить mime-тип example.webp в ~ / Pictures , введите следующую команду:

     xdg-mime query filetype ~ / Pictures / example.webp
    
  3. Создайте сценарий эскиза для изображений WebP

    • Создайте файл с именем webp-thumbnailer-bin в / usr / local / bin :
       sudo nano / usr / local / bin / webp-thumbnailer-bin
      
    • Скопируйте этот скрипт (на основе методов из Script Echo Color и Aistis ) в файл (используйте Ctrl + C для копирования и Ctrl + Shift + V для вставки в окно nano ):
       #! / Bin / bash
      sInFile = "$ 1"
      nSize = "2 доллара"
      sOutFile = "$ 3"
      
      # Проверяем, является ли входное изображение анимированным WebP
      sInfo = "$ (webpmux -info" $ sInFile ")"
      nAnimation = "$ (echo" $ sInfo "| grep --count animation)"
      
      # Получить размеры входного изображения;
      # Для неподвижного изображения это ширина и высота
      # холста;
      # Для анимированного изображения это ширина и высота
      # первого кадра изображения, который может быть
      # отличается от таковых на холсте.если [[$ nAnimation -eq 0]]; тогда
      sSize = "$ (echo" $ sInfo "| grep Canvas | cut --delimiter = '' --output-delimiter = $ '\ t' --fields = 3,5)"
      еще
      sSize = "$ (echo" $ sInfo "| grep '^ * 1:' | sed -r 's | ^ * 1: + ([0-9] +) + ([0-9] +). * | \ 1 \ t \ 2 | ') "
      фи
      nWidth = "$ (echo" $ sSize "| cut --fields = 1)"
      nHeight = "$ (echo" $ sSize "| cut --fields = 2)"
      
      # Получить номер версии `dwebp`
      sVersion = "$ (dwebp -version)"
      
      # Рассчитать новые размеры выходного эскиза;
      # `dwebp` 0.5.0 и более поздние версии поддерживают использование 0 в качестве масштабирования
      # измерение;
      # В более старых версиях меньший размер должен быть
      # рассчитывается вручную (с использованием `bc`).
      если [[$ sVersion <0.5.0]]; тогда
      если ((nWidth> nHeight)); тогда
      nNewWidth = "$ nSize"
      nNewHeight = "$ (echo" scale = 10; f = $ nHeight * ($ nNewWidth / $ nWidth); scale = 0; f / 1 "| bc)"
      еще
      nNewHeight = "$ nSize"
      nNewWidth = "$ (echo" scale = 10; f = $ nWidth * ($ nNewHeight / $ nHeight); scale = 0; f / 1 "| bc)"
      фи
      еще
      если ((nWidth> nHeight)); тогда
      nNewWidth = "$ nSize"
      nNewHeight = 0
      еще
      nNewHeight = "$ nSize"
      nNewWidth = 0
      фи
      фи
      
      # Создать миниатюру вывода;
      # Если входное изображение - анимированный WebP, первое
      # кадр извлекается с помощью `webpmux` и используется как ввод
      # для `dwebp`.
      # Версии `dwebp` старше 0.4.1 не поддерживают
      # чтение данных WebP из стандартного ввода, поэтому фрейм
      # сначала нужно записать на диск.
      если [[$ nAnimation -eq 0]]; тогда
       / usr / bin / dwebp "$ sInFile" -scale "$ nNewWidth" "$ nNewHeight" -o "$ sOutFile"
      еще
      если [[$ sVersion <0.4.1]]; тогда
       / usr / bin / webpmux -get frame 1 «$ sInFile» -o «$ sOutFile» .webp
       / usr / bin / dwebp "$ sOutFile" .webp -scale "$ nNewWidth" "$ nNewHeight" -o "$ sOutFile"
      rm "$ sOutFile" .webp
      еще
       / usr / bin / webpmux -get frame 1 "$ sInFile" -o - | / usr / bin / dwebp -scale "$ nNewWidth" "$ nNewHeight" -o "$ sOutFile" - -
      фи
      фи
      
    • Нажмите Ctrl + O и Введите , чтобы сохранить файл, и Ctrl + X для выхода. nano и вернитесь к терминалу.
    • Сделайте файл исполняемым с помощью:
       sudo chmod + x / usr / local / bin / webp-thumbnailer-bin
      

    Примечания:

    • Этот скрипт создает эскизы для неподвижных (неанимированных) и анимированных изображений WebP.
    • Первоначально я поместил сценарий в / usr / bin , но, как подсказывает этот ответ , безопаснее разместить его в / usr / local / bin ].
    • Если вы используете Nemo или Caja, вы можете разместить сценарий где-нибудь в своем домашнем каталоге (например, ~ / .local / bin ) и запускать команды, подобные приведенным выше, без sudo . Однако, если вы используете Nautilus, вы можете сделать это только с помощью Nautilus, используя libgnome-desktop старше 3.28.2 . Это связано с тем, что libgnome-desktop 3.28.2 и более поздние версии реализуют изолированную программную среду для эскизов и по умолчанию не допускают выполнение каких-либо программ или сценариев для эскизов в домашнем каталоге. Чтобы получить номер версии используемой libgnome-desktop , выполните следующую команду:
       список подходящих - установлено | grep libgnome-desktop | вырезать -d '' -f 2 | вырезать -d '-' -f 1
      
  4. Создайте запись в миниатюре для изображений WebP

    • Сначала создайте папку с именем миниатюры в ~ / .local / share .
       mkdir -p ~ / .local / share / thumbnailers
      
    • Создайте в этой папке файл с именем webp.thumbnailer .
       нано ~ / .local / share / thumbnailers / webp.чертёжник
      
    • Скопируйте следующие строки в файл (используйте Ctrl + C для копирования, Ctrl + Shift + V). для вставки в окно нано ):
        [Запись в эскизе]
      Exec = / usr / local / bin / webp-thumbnailer-bin% i% s% o
      MimeType = изображение / webp;
      
    • Нажмите Ctrl + O и Введите , чтобы сохранить файл, и Ctrl + X для выхода. нано .

    Примечания:

    • Если тип mime, полученный на шаге 2, отсутствует в третьей строке, указанной выше (ключ MimeType ), добавьте его в конец строки и, при необходимости, завершите строка с точкой с запятой (; ).
    • Если вы хотите, чтобы эскизы изображений WebP были доступны всем пользователям, поместите запись для миниатюр в / usr / share / thumbnailers вместо ~ / .local / share / thumbnailers :
       sudo nano /usr/share/thumbnailers/webp.thumbnailer
      
    • Текстовый редактор графического интерфейса пользователя, такой как gedit , также можно использовать для создания и редактирования записи в виде эскиза, но если вы планируете разместить запись в / usr / share / thumbnailers , используя nano настоятельно рекомендуется .
  5. Очистите старые кешированные эскизы и перезапустите файловый менеджер.

    • Сначала полностью закройте файловый менеджер с помощью одной из следующих команд:
       наутилус -q
      nemo -q
      caja -q
      
    • Затем удалите кешированные неудачные эскизы:
       rm -r ~ /.кеш / миниатюры / сбой
      
    • При желании удалите все кэшированные эскизы (если ранее вы использовали неоптимизированные записи эскизов или сценарии, которые создавали большие эскизы):
       rm -r ~ / .cache / эскизы / *
      
    • Наконец, снова откройте файловый менеджер. Теперь у изображений WebP должны быть свои эскизы.

Метод 2: Используйте dwebp


  1. Установите webp (который предоставляет dwebp )

     sudo apt install webp
    
  2. Получите mime-type изображений WebP (см. Используйте dwebp & webpmux , шаг 2).

  3. Создайте запись в миниатюре для изображений WebP ( см. Используйте dwebp & webpmux , шаг 4 для получения подробной информации)

    Содержимое ~ / .local / share / thumbnailers / webp.thumbnailer с dwebp как программа эскиза:

    • Для Ubuntu 18.04 и новее (или dwebp 0.5.0 и новее):
        [Запись в эскизе]
      Exec = / usr / bin / dwebp% i -размер% s 0 -o% o
      MimeType = изображение / webp;
      
    • Для более старых выпусков Ubuntu (или более старых dwebp ):
        [Запись в эскизе]
      Exec = / usr / bin / dwebp% i -o% o
      MimeType = изображение / webp; аудио / x-рифф;
      

    Примечания:

    • dwebp не поддерживает декодирование анимированного WebP, поэтому эти записи в миниатюре будут создавать только эскизы для неподвижных изображений WebP.
    • Если вы используете Nautilus в Ubuntu 18.04 или более поздней версии или Caja в Ubuntu 20.04 или более поздней версии, которые , а не , автоматически уменьшают эскизы, размер которых больше, чем эскиз по умолчанию размер (128x128 или 256x256 пикселей), то следует использовать метод 1 (при котором размер выходных эскизов изменяется правильно).
  4. Очистите старые кэшированные эскизы и перезапустите файловый менеджер (см. Используйте dwebp & webpmux , шаг 5)

Метод 3: Используйте convert


convert инструмент (из imagemagick ) можно использовать для создания эскизов изображений WebP в Ubuntu 16.04 и новее.Идея использования convert в качестве миниатюрной программы для WebP пришла из ответов Тианы и Устмаэстро .

  1. Установите imagemagick , который предоставляет convert

     sudo apt install imagemagick
    

    Примечание: convert может обрабатывать изображения WebP изначально в Ubuntu 20.04 и новее; однако в более старых версиях, таких как Ubuntu 18.04 и 16.04, сжатие и распаковка WebP фактически делегированы в cwebp и dwebp из webp упаковка. В результате, если вы используете эти старые выпуски, вам также необходимо установить webp :

     sudo apt install webp
    
  2. Получите mime-тип изображений WebP (см. Используйте dwebp & webpmux , шаг 2)

  3. Получите номер версии libgnnome-desktop используется Nautilus и при необходимости исправляет проблемы с песочницей (пропустите этот шаг, если вы используете Nemo или Caja)

    Выполните эту команду, чтобы получить номер версии libgnome-desktop :

     apt list - установлен | grep libgnome-desktop | вырезать -d '' -f 2 | вырезать -d '-' -f 1
    

    Если результат 3.28.2 , то вам нужно сделать следующее (в противном случае перейти к следующему шагу):

    • Создайте файл с именем bwrap в / usr / local / bin :
       Судо нано / usr / local / bin / bwrap
      
    • Скопируйте содержимое этого скрипта (автора Николаса Бернаертса ) в файл (используйте Ctrl + C для копирования и Ctrl + Shift + V для вставки в окно нано ).
    • Сохраните файл и выйдите из nano (нажмите Ctrl + O , введите , Ctrl + X ).
    • Сделайте файл исполняемым с помощью:
       sudo chmod + x / usr / local / bin / bwrap
      

    Обоснование: convert требует определенных файлов в / etc и / var для правильной работы, но Nautilus использует libgnnome-desktop 3.28.2 (в частности, в Ubuntu 18.04) не монтирует эти каталоги в песочнице , что приводит к сбоям в создании эскизов. Приведенный выше сценарий bwrap устраняет проблему, добавляя каталоги, необходимые для convert , в песочницу (дополнительные сведения см. В статье ).

  4. Создайте запись в миниатюре для изображений WebP (см. Используйте dwebp & webpmux , шаг 4 для получения дополнительной информации)

    Содержимое ~ / .local / share / миниатюры / webp.thumbnailer с convert в качестве программы thumbnailer:

      [Запись в эскизе]
    Exec = / usr / bin / convert% i [0] -thumbnail% sx% s png:% o
    MimeType = изображение / webp;
    

    Обоснование:

    • Формат файла выходного изображения явно указан с помощью png: , потому что Nemo, Caja и некоторые версии Nautilus не выдают выходные эскизы в виде .png расширение. Без png: , convert просто создает файлы в том же формате, что и входной (в данном случае WebP) для этих файловых менеджеров, что приводит к ошибочным эскизам.
    • -thumbnail% sx% s используется вместо просто -thumbnail% s или -эскиз x% s , чтобы гарантировать, что ширина и высота выходного эскиза не превышает 256 или 128 пикселей, что соответствует поведению официальных эскизов . -thumbnail% s ограничивает только ширину, а -thumbnail x% s ограничивает только высоту (см. Геометрия изображения от ImageMagick) .
    • [0] указывается так, что, если входное изображение является анимированным WebP, только первый кадр распаковывается в миниатюру PNG.

    Примечания:

    • С imagemagick 6.9.10-68 или новее (в Ubuntu 21.04 и новее), который поддерживает анимированное кодирование и декодирование WebP, эта запись в миниатюре будет создавать эскизы для как анимированных, так и неанимированных изображений WebP. Однако в более старых версиях будут созданы только эскизы для неподвижных изображений WebP.
    • Если вы используете Nautilus с libgnnome-desktop 3.36.1 (в частности, в Ubuntu 20.04), тогда /usr/bin/convert-im6.q16 должен быть используется вместо / usr / bin / convert :
       Exec = / usr / bin / convert-im6.q16% i [0] -thumbnail% sx% s png:% o
      
      Это связано с тем, что в этой версии libgnnome-desktop , /usr/bin/convert-im6.q16 виден в песочнице , а / usr / bin / convert нет ( Тиана тоже это заметила).
  5. Очистите старые кешированные эскизы и перезапустите файловый менеджер (см. Использовать dwebp & webpmux , шаг 5)

Метод 4: Используйте gm


gm ] graphicsmagick ) поддерживает WebP в Ubuntu 16.04 и новее.

  1. Установите graphicsmagick , который предоставляет инструмент gm

     sudo apt install graphicsmagick
    
  2. Получите mime-type изображений WebP (см. Используйте dwebp & webpmux , шаг 2).

  3. Создайте запись в миниатюре для изображений WebP ( см. Используйте dwebp & webpmux , шаг 4 для подробностей)

    Содержимое ~ / .local / share / thumbnailers / webp.thumbnailer с gm как программа для создания эскизов:

      [Запись в эскизе]
    Exec = / usr / bin / gm convert% i [0] -thumbnail% sx% s png:% o
    MimeType = изображение / webp;
    

    Примечание: gm не поддерживает анимированные файлы WebP, поэтому эта запись в миниатюре создает эскизы только для неанимированных изображений WebP.

  4. Очистите старые кешированные эскизы и перезапустите файловый менеджер (см. Используйте dwebp & webpmux , шаг 5)

Метод 5: Используйте totem-video-thumbnailer


Как предложено Ян Бромс , тотем-видео-миниатюра также можно использовать для миниатюр изображений WebP.

  1. Установите totem и gstreamer1.0-plugins-bad

     sudo apt install totem gstreamer1.0-plugins-bad
    

    Пакет totem предоставляет totem-video-thumbnailer , а gstreamer1.Пакет 0-plugins-bad содержит кодеки, необходимые totem-video-thumbnailer для обработки изображений WebP.

    Примечание: totem - видеоплеер по умолчанию на рабочих столах GNOME, поэтому он предустановлен в Ubuntu. gstreamer1.0-plugins-bad не предустановлен, но, вероятно, потому, что он указан только как предлагаемый пакет для totem .

  2. Получите mime-type изображений WebP (см. Используйте dwebp & webpmux , шаг 2).

  3. Создайте запись в миниатюре для изображений WebP ( см. Используйте dwebp & webpmux , шаг 4 для подробностей)

    Содержимое ~ / .local / share / thumbnailers / webp.thumbnailer с totem-video-thumbnailer в качестве программы-эскиза:

    • Для Ubuntu 16.04 и новее (или totem 3.11.90 и новее): см. Ответ Яна Бромса
    • Для более старых выпусков Ubuntu (или более старых тотем ):
        [Запись в эскизе]
      Exec = / usr / bin / totem-video-thumbnailer -s% s --raw% u% o
      MimeType = изображение / webp; аудио / x-рифф;
      

    Обоснование: totem-video-thumbnailer из totem старше 3.11.90 по умолчанию добавляет границы (наложение пленки) к эскизам. Параметр - raw используется для отключения этой функции.

    Примечание: totem-video-thumbnailer не поддерживает анимированный WebP, поэтому эта запись в миниатюре будет создавать миниатюры только для неподвижных изображений WebP.

  4. Очистите старые кешированные эскизы и перезапустите файловый менеджер (см. Использовать dwebp & webpmux , шаг 5)

Метод 6: Используйте ffmpeg


ffmpeg поддерживает декодирование WebP на Ubuntu 16.04 или новее.

  1. Установите ffmpeg

     sudo apt install ffmpeg
    
  2. Получите mime-type изображений WebP (см. Используйте dwebp & webpmux , шаг 2)

  3. Создайте запись в миниатюре для изображений WebP (подробнее см. Используйте dwebp & webpmux , шаг 4)

    Содержимое ~ / .local / share / thumbnailers / webp.thumbnailer с ffmpeg в качестве программы для миниатюр:

      [Запись в эскизе]
    Exec = / usr / bin / ffmpeg -y -i% i -filter scale =% s:% s: force_original_aspect_ratio = 1 -f apng% o
    MimeType = изображение / webp;
    

    Обоснование:

    • -y указано, чтобы заставить ffmpeg перезаписывать выходные эскизы во временном каталоге. Без этой опции неудачные эскизы не могут быть восстановлены.
    • Формат вывода явно указывается с помощью -f apng (см. Использовать преобразование , шаг 4). apng на самом деле предназначен для создания анимированных файлов PNG, но если входом является неподвижное изображение, создается только обычный PNG.
    • scale =% s:% s: force_original_aspect_ratio = 1 используется так, чтобы наибольший размер выходного эскиза составлял не более 128 или 256 пикселей (что соответствует поведению официальных эскизов ) . См. документацию FFmpeg для фильтра scale для получения более подробной информации.

    Примечание. ffmpeg не поддерживает анимированные изображения WebP, поэтому эта запись в миниатюре создает только эскизы для неподвижных изображений WebP.

  4. Очистите старые кешированные эскизы и перезапустите файловый менеджер (см. Используйте dwebp & webpmux , шаг 5)

Резюме


Протестировано на → Ubuntu 14.04 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04; Linux Mint Cinnamon 20; Ubuntu MATE 20.04 Ubuntu 20.10 Ubuntu 21.04
dwebp & webpmux ✔️ анимированный ✔️ анимированный ✔️ анимированный ✔️ анимированный ✔️ анимированный ✔️ анимированный
dwebp ✔️ ✔️ ✔️ -размер 0 ✔️ -размер 0 ✔️ -размер 0 ✔️ -размер 0
преобразование ❌️ ✔️ webp ✔️ webp bwrap ✔️ convert-im6.q16 ✔️ ✔️ анимированный
gm ❌️ ✔️ ✔️ ✔️ ✔️ ✔️
тотем-видео-миниатюра ✔️ - raw ✔️ ✔️ ✔️ ✔️ ✔️
ffmpeg N / A ✔️ ✔️ ✔️ ✔️ ✔️
12
ответ дан 2 April 2020 в 20:36

Другие решения не работали на моей 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;
2
ответ дан 31 October 2020 в 13:14

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
]
1
ответ дан 25 November 2020 в 16:52

Из Wikipedia Webp. Являясь производным от видеоформата 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; 
1
ответ дан 9 December 2020 в 15:15

Другие вопросы по тегам:

Похожие вопросы: