Как я могу преобразовать папку .pngs в .jpgs при настройке цвета фона?

10

У меня есть папка PNG-файлов с прозрачным фоном. Я хотел бы преобразовать их из командной строки и сохранить прозрачный фон изображений.

Буду признателен за любую помощь.

Поскольку jpgs не поддерживает прозрачность, как я могу указать шестнадцатеричное значение цвета фона выходного jpg? Прямо сейчас это по умолчанию #ffffff? Я пробовал этот сценарий, но он дает выходной белый фон jpgs:

mogrify -quality 100 -format jpg *.png

Обновить

Я создал эти файлы PNG в Inkscape. Я должен отметить, что моя цель в преобразовании этих PNG в JPG состоит в том, чтобы избавиться от зубчатых краев на круглых или угловых объектах. В настоящее время pngs имеют неровные края, и я прочитал, что преобразование их в jpgs может решить эту проблему. Однако преобразование с помощью метода, изложенного в ответе Кристиана Скьодта, дает изображениям еще более острые неровные края. Есть ли способ, которым я могу преобразовать PNG в JPG, а также использовать сглаживание или, возможно, другой метод, чтобы избавиться от зубчатых краев? Спасибо за помощь.

Джеймс
источник
3
Довольно сложно ответить на ваш вопрос, если он все время меняется ... Для дальнейшего использования: попробуйте включить в свой вопрос то, чего вы хотите достичь с самого начала. «Ваше обновление 2»: Является ли «неровность» просто результатом выбранного вами разрешения? Что если увеличить разрешение (число точек на дюйм в диалоговом окне «Экспорт растрового изображения ...»)?
Марсель Стимберг

Ответы:

3

Чтобы сгладить края, вы можете создать PNG в 10 раз больше целевого размера, а затем изменить размер с помощью сглаживания в JPG. Я сделал это с помощью Python и Python Imaging Library, но я не уверен, как это сделать, используя другие инструменты.

brousch
источник
28

Формат JPEG не поддерживает прозрачность - поэтому сохранение прозрачного фона невозможно, если вы хотите (или должны) использовать формат JPEG. Посмотрите Википедию для обзора возможностей различных форматов изображений.

Обратите внимание, что JPEG 2000 действительно поддерживает прозрачность, но это гораздо реже, чем формат JPEG. Это зависит от вашего варианта использования, является ли это жизнеспособной альтернативой.

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

На ваш второй вопрос:

Чтобы указать цвет фона при конвертации изображений, вы можете использовать -fillопцию:

mogrify -quality 100 -format jpg -fill "#FF0000" -opaque none *.png

Использование -backgroundобеспечивает аналогичные результаты. Не забудьте -opaque none.

Кристиан Скьёдт
источник
Эй, спасибо за помощь. Есть ли способ, которым я могу сглаживать выходной JPEG с помощью этой команды? Смотрите обновление 2 выше для дополнительного контекста. Спасибо.
Джеймс
4

Извините, что нет способа, jpegформат не поддерживает, alpha channelпоэтому у вас не может быть прозрачности.

Мистер Шунц
источник
0

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

Ли Райан
источник