Главная
» LINUX
»
Как преобразовать PNG в JPG в Linux с помощью ImageMagick
Как преобразовать PNG в JPG в Linux с помощью ImageMagick
Для преобразования PNG в JPG в Linux наиболее гибким вариантом является ImageMagick. В ImageMagick 7 можно преобразовать один файл с помощью команды `image.jpg` magick input.png output.jpg, а целую папку — с помощью команды `image.jpg` magick mogrify -format jpg *.png. Если PNG-файл имеет прозрачность, сначала наложите его на сплошной фон, поскольку JPEG не поддерживает альфа-канал.
Установка ImageMagick в Linux
ImageMagick доступен в стандартных репозиториях основных дистрибутивов Linux. В текущей документации рекомендуется использовать эту magickпрограмму в качестве основной точки входа в командную строку. Версии пакетов различаются в зависимости от дистрибутива и релиза, поэтому в более старых системах могут по-прежнему предоставляться команды ImageMagick 6, такие как convertи mogrifyбез magickпрефикса.
Распространение
Команда установки
Ubuntu / Debian
sudo apt update && sudo apt install imagemagick
Fedora
sudo dnf install ImageMagick
Arch Linux
sudo pacman -S imagemagick
openSUSE
sudo zypper install ImageMagick
Перед началом преобразования установите ImageMagick с помощью менеджера пакетов вашего дистрибутива.
Откройте терминал и перейдите в папку, содержащую образ. Например:
cd ~/Pictures
Затем преобразуйте файл, присвоив выходному файлу .jpgрасширение:
magick photo.png photo.jpg
При стандартном преобразовании с помощью ImageMagick исходный файл PNG сохраняется, а в новый файл JPG записывается новый файл.
Исходный файл photo.pngостаётся на месте, поскольку команда записывает данные в другой выходной файл с другим именем. Чтобы явно выбрать качество сжатия JPEG, добавьте -qualityперед выходным файлом:
magick photo.png -quality 90 photo.jpg
ImageMagick принимает значения качества JPEG от 1 до 100. Более высокие значения, как правило, сохраняют больше деталей, но приводят к увеличению размера файлов. Для получения информации о поведении, специфичном для формата, см. официальную -qualityсправочную информацию по параметрам .
Преобразуйте прозрачный PNG-файл без нежелательного фона.
В формате PNG можно хранить прозрачные пиксели; в формате JPEG — нет. Если исходный файл содержит прозрачные пиксели, перед сохранением в формате JPG объедините их с нужным цветом фона. Для белого фона выполните:
magick logo.png -background white -alpha remove -alpha off logo.jpg
Перед преобразованием в JPEG, который не имеет альфа-канала, необходимо свести прозрачные пиксели PNG к белому цвету.
Эта -alpha removeоперация накладывает изображение на выбранный фон, при этом -alpha offальфа-канал для выходного изображения отключается. ImageMagick описывает это поведение в своих официальных параметрах альфа-канала .
Преобразуйте несколько файлов PNG в JPG одновременно.
Для преобразования всех .pngфайлов в текущем каталоге в нижний регистр используйте mogrify:
magick mogrify -format jpg *.png
Эта mogrify -format jpgкоманда создает соответствующие файлы JPG для всех файлов PNG в текущей папке.
Согласно официальной mogrifyдокументации ImageMagick , использование параметра -format jpgоставляет файлы PNG без изменений и создает соответствующие файлы JPG. Если ваши файлы PNG могут содержать прозрачность, комбинируйте параметры:
magick mogrify -background white -alpha remove -alpha off -quality 90 -format jpg *.png
Будьте осторожны, если в папке уже есть файлы JPG с такими же базовыми именами, поскольку новые выходные файлы могут заменить эти файлы. Для более безопасного процесса записывайте преобразованные файлы в отдельную директорию:
mkdir -p jpg
for f in *.png; do
magick "$f" -background white -alpha remove -alpha off -quality 90 "jpg/${f%.png}.jpg"
done
Мелкие детали в именах файлов, которые могут вызвать сбой при пакетной обработке.
В Linux имена файлов обычно чувствительны к регистру, поэтому подстановочный знак *.pngобычно не соответствует файлу, заканчивающемуся на .PNG. При необходимости запустите пакетный файл еще раз с параметром *.PNG. Для файлов, содержащих пробелы, заключите их в кавычки, например magick "Summer Photo.png" "Summer Photo.jpg". Эти детали предотвратят передачу оболочкой неправильного пути в ImageMagick.
Что, если magickоно не будет найдено?
В некоторых старых версиях Linux ImageMagick 6 по-прежнему входит в состав пакета. В этом случае используйте команду convert photo.png photo.jpgдля одного изображения и mogrify -format jpg *.pngдля пакетной обработки. Если ни одна из этих команд не существует, убедитесь, что пакет ImageMagick успешно установлен и что его исполняемые файлы находятся в вашей оболочке PATH.
Для большинства пользователей практическое правило простое: используйте magickImageMagick 7, сглаживайте прозрачность перед созданием JPEG-файлов и используйте, magick mogrify -format jpgкогда нужно быстро обработать целую папку.