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

9

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

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

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

mogrify -quality 100 -format jpg *.png

Обновление

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

задан James 26.08.2011 в 08:32
источник

5 ответов

3

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

    
ответ дан brousch 26.08.2011 в 22:51
источник
28

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

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

    
ответ дан Marcel Stimberg 26.08.2011 в 08:55
15

К вашему второму вопросу:

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

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

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

    
ответ дан Christian Skjødt 26.08.2011 в 09:51
4

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

    
ответ дан Mr Shunz 26.08.2011 в 08:58
0

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

    
ответ дан Lie Ryan 26.08.2011 в 10:47