Поиск по сайту:

Сжатие изображений PNG в Linux с помощью Pngquant

В этом руководстве мы узнаем, что такое Pngquant и его функции, как установить Pngquant и как сжимать изображения PNG в Linux с помощью Pngquant.

Что такое Pngquant?

Pngquant – это бесплатный кроссплатформенный компрессор PNG с открытым исходным кодом, работающий из командной строки. Он основан на переносимой библиотеке libimagequant и написан на C99.

Он значительно уменьшает размер файла за счет преобразования изображения PNG в более эффективный 8-битный формат PNG и сохраняет полную альфа-прозрачность. Как вы, возможно, уже знаете, 8-битные файлы PNG часто на 60–80% меньше, чем 24/32-битные файлы PNG.

Изображения, сжатые с помощью Pngquant, полностью совместимы со всеми веб-браузерами и операционными системами. Pngquant может сжимать одно или несколько изображений одновременно.

Функции

Pngquant имеет следующие функции.

  • Поддержка пакетного преобразования нескольких файлов PNG.
  • Качественная генерация палитр.
  • Он использует алгоритм квантования Median Cut для оптимизации изображений.
  • Может быть легко интегрирован со сценариями оболочки, графическими интерфейсами и серверным программным обеспечением.
  • Конвертируйте изображения в желаемое качество и пропускайте изображения, которые невозможно преобразовать с желаемым качеством.
  • Поддержка многоядерности и оптимизация Intel SSE.

Установите Pngquant в Linux

Pngquant можно установить разными способами.

Установите Pngquant из репозиториев дистрибутива.

Pngquant доступен в репозиториях по умолчанию большинства дистрибутивов Linux.

В Arch Linux и его вариантах Pngquant доступен в репозитории [Community]. Включите репозиторий сообщества и установите его с помощью Pacman, как показано ниже.

sudo pacman -S pngquant

В Debian, Ubuntu, Linux Mint:

sudo apt install pngquant

В системах Ubuntu вам необходимо включить репозиторий [Universe] для установки Pngquant.

Чтобы включить репозиторий Universe, выполните:

sudo add-apt-repository universe

В Федоре:

sudo dnf install pngquant

В openSUSE:

sudo zypper install pngquant

В CentOS:

sudo yum install epel-release
sudo yum install pngquant

Проверьте установленную версию Pngquant:

$ pngquant -V
2.5.0 (June 2015)

Версия Pngquant, доступная в репозиториях по умолчанию, может быть устаревшей. Если вам нужна самая последняя версия, скомпилируйте и установите ее вручную из исходного кода, как показано ниже.

Установите Pngquant из исходного кода.

Сначала установите установите необходимые зависимости.

В Дебиане, Убунту:

sudo apt install git gcc cmake libpng-dev pkg-config

В CentOS, Fedora:

sudo yum install git libpng-devel gcc cmake

Затем git клонируйте последнюю версию Pngquant:

git clone --recursive https://github.com/kornelski/pngquant.git

Приведенная выше команда загрузит содержимое репозитория Pngquant GitHub и сохранит его в папке с именем «pngquant» в вашем текущем рабочем каталоге.

Перейдите в каталог «pngquant»:

cd pngquant

Наконец, выполните следующие команды для компиляции и установки Pngquant:

make
sudo make install

По умолчанию Pngquant будет установлен в папку /usr/local/bin. Если вы хотите установить его в другой каталог, выполните:

./configure --prefix=dir && make

Замените «dir» на свой путь. Сначала вам нужно запустить эту команду, а затем команду «sudo make install».

Проверьте версию Pngquant:

$ pngquant -V
2.12.5 (July 2019)

Видеть? Это самая последняя версия.

Установите Pngquant с помощью Cargo

Pngquant также можно установить с помощью менеджера пакетов Cargo. Сначала установите Rust, как описано по следующей ссылке.

  • Установить язык программирования Rust в Linux

git клонируйте последнюю версию Pngquant:

git clone --recursive https://github.com/kornelski/pngquant.git

Наконец, соберите и установите Pngquant с помощью Cargo, как показано ниже.

cd pngquant
sudo cargo build --release

Информацию о других методах установки см. на официальной странице установки Pngquant.

Сжатие изображений PNG в Linux с помощью Pngquant

Использование Pngquant тривиально и не требует каких-либо специальных навыков.

В моем текущем каталоге есть файл изображения PNG с именем «ostechnix.png». Позвольте мне показать вам его размер.

$ du -sh ostechnix.png 
152K ostechnix.png

Как видите, размер изображения составляет 152 КБ.

Сжать изображение PNG

Чтобы сжать изображение PNG с помощью Pngquant, просто укажите путь к нему, как показано ниже:

pngquant ostechnix.png

Приведенная выше команда сожмет файл ostechnix.png и сохранит его как новый файл с именем "ostechnix-fs8.png". По умолчанию Pngquant будет использовать имя выходного файла, такое же, как имя входного файла, с суффиксом -or8.png или -fs8.png в конце. Это означает, что исходный файл не будет перезаписан. Если вас не устраивает степень сжатия, просто удалите сжатый файл и сохраните исходный.

Давайте еще раз проверим размер файла сжатого изображения:

$ du -sh ostechnix-fs8.png 
48K ostechnix-fs8.png

Сжатие изображений PNG с помощью Pngquant

Видеть? Pngquant уменьшил размер изображения с 152 КБ до 48 КБ. Это действительно хорошая работа. Откройте изображение в любой программе просмотра изображений и сравните их. Вы не заметите большой разницы в качестве между исходным и сжатым изображениями. Оба изображения будут выглядеть почти одинаково!

Отображать сообщение о состоянии во время сжатия

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

$ pngquant ostechnix.png --verbose
ostechnix.png:
conserving memory
read 152KB file
corrected image from gamma 2.2 to sRGB gamma
made histogram...1854 colors found
selecting colors...4%
selecting colors...25%
selecting colors...28%
selecting colors...49%
selecting colors...69%
selecting colors...90%
selecting colors...100%
moving colormap towards local minimum
eliminated opaque tRNS-chunk entries...61 entries transparent
mapped image to new colors...MSE=0.055 (Q=99)
writing 256-color image as ostechnix-fs8.png
No errors detected while quantizing 1 image.

Теперь вы увидите прогресс во время сжатия.

Сжатие нескольких изображений PNG

Pngquant также может конвертировать несколько изображений. Следующая команда сожмет файлы picture1.png и picture2.png в текущем рабочем каталоге.

pngquant picture1.png picture2.png

Кроме того, мы можем переместить все файлы в каталоге и сжать их за один раз. Например, чтобы преобразовать все изображения в папке «/home/sk/images», выполните:

pngquant /home/sk/images/*.png

Изменить суффикс имени выходного файла

Как я уже сказал, имя выходного файла такое же, как и входное, за исключением того, что оно заканчивается на "-fs8.png", "-or8.png". Однако вы можете изменить суффикс по своему усмотрению, как показано ниже.

pngquant ostechnix.png --ext linux.png

Эта команда сожмет файл ostechnix.png и сохранит его как ostechnixlinux.png.

Пропустить сохранение файлов, если размер сжатых файлов больше исходных файлов.

Какой смысл сжатия, если преобразованные файлы больше исходных? Это преобразование бесполезно, поэтому мы можем пропустить его, как показано ниже.

pngquant --skip-if-larger ostechnix.png

Приведенная выше команда сохранит преобразованный файл, только если он меньше исходного.

Сохраните преобразованные файлы по другому пути

По умолчанию Pngquant сохранит входные и выходные файлы изображений в одном и том же каталоге. Если вы хотите сохранить выходной файл в другом месте, команда будет такой:

pngquant ostechnix.png --output Documents/output.png

Эта команда сожмет ostechnix.png и сохранит его как output.png в каталоге Documents.

Сжатие PNG-изображений в произвольном качестве

Pngquant максимально сжимает изображения. Мы также можем вручную установить качество изображений. Pngquant позволяет нам устанавливать качество изображения в диапазоне от 0 (худшее) до 100 (идеальное) с помощью min и max. параметры.

В следующем примере минимальное качество изображения устанавливается равным 60, а максимальное качество — 80.

pngquant --quality=60-80 image.png

Если в результате преобразования качество будет ниже минимального, изображение не будет сохранено.

Удаление метаданных изображения

Метаданные изображения — это набор данных о магах. Он включает в себя всю информацию об изображении, такую как формат изображения, настройки камеры, разрешение, дату и время изображения, заголовок и комментарии, геолокацию и многое другое. Обратитесь к следующей статье, чтобы узнать, как просмотреть метаданные изображения.

  • Как просмотреть метаданные изображения в Linux

Если у вас нет метаданных, вы можете просто удалить их с помощью pngquant, как показано ниже.

pngquant --strip image.png

Более подробную информацию можно найти на страницах руководства.

man pngquant

Рекомендуем прочитать:

  • Converseen — простой графический пакетный конвертер изображений с возможностью изменения размера
  • 3 средства просмотра изображений CLI для отображения изображений в терминале
  • Как отображать миниатюры изображений в терминале
  • Как сохранить вывод команды Linux в изображение или текстовый файл
  • Gifski – кроссплатформенный высококачественный кодировщик GIF
  • Flameshot — простой, но мощный и многофункциональный инструмент для создания снимков экрана

Я использую Pngquant уже много лет. Это очень помогает мне сжимать изображения PNG до 70% и более. Если вы ищете оптимизатор и компрессор изображений PNG, Pngquant может стать хорошим выбором.

Ресурсы:

  • Веб-сайт Pngquant
  • Репозиторий Pngquant на GitHub

Статьи по данной тематике