Як я можу конвертувати папку .pngs у .jpgs, встановлюючи колір тла?


10

У мене папка файлів png, що мають прозорі фони. Я хотів би перетворити їх із командного рядка та підтримувати прозорі фони зображень.

Буду вдячний за будь-яку допомогу.

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

mogrify -quality 100 -format jpg *.png

Оновлення

Я створив ці png-файли в Inkscape. Я мушу зазначити, що моя мета перетворення цих PNG в jpgs - позбутися нерівних країв на кругових або кутових об'єктах. Наразі у pngs є нерівні краї, і я прочитав, що перетворення їх у jpgs може вирішити цю проблему. Однак перетворення методом, викладеним у відповіді Крістіана Шкіддта, надає зображенням ще гірші зубчасті краї. Чи є спосіб перетворити PNG у jpg, а також застосувати антизгладжування чи, можливо, іншу техніку для позбавлення від зубчастих країв? Дякую за допомогу.


3
Відповісти на ваше питання досить складно, якщо воно постійно змінюється ... Для подальшої довідки: Спробуйте включити у своє запитання те, що ви хочете досягти, з самого початку. Повторіть своє "оновлення 2": Чи "нерівність" є просто результатом обраної вами резолюції? Що робити, якщо збільшити роздільну здатність (номер DPI у діалоговому вікні "Експорт растрової карти ...")?
Марсель Стімберг

Відповіді:


3

Для вирівнювання країв ви можете створити PNG на 10 разів більше, ніж ваш цільовий розмір, а потім змінити розмір, не згладжуючи JPG. Я зробив це, використовуючи Python і бібліотеку зображень Python з хорошим ефектом, але я не впевнений, як це зробити за допомогою інших інструментів.


28

Формат JPEG не підтримує прозорість, тому збереження прозорих фонів неможливо, якщо ви хочете (або повинні) використовувати формат JPEG. Дивіться у Вікіпедії для огляду можливостей різних форматів зображень.

Зауважте, що JPEG 2000 дійсно підтримує прозорість, але це набагато рідше, ніж формат JPEG. Від вашого випадку використання залежить, чи це життєздатна альтернатива.


Можливо, я помиляюся, але ОП запитує про те, на якому кольорі зроблені будь-які прозорі ділянки. Їх роблять білими, але, наприклад, ОП може використовувати синій.
нанофарад

16

До вашого другого питання:

Щоб вказати колір тла при перетворенні зображень, ви можете скористатися -fillопцією:

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

Використання -backgroundдає аналогічні результати. Не забувайте -opaque none.


Гей, дякую за допомогу. Чи є якийсь спосіб, щоб я міг antialias вихід jpeg за допомогою цієї команди? Дивіться оновлення 2 вище для додаткового контексту. Дякую.
Джеймс

4

Вибачте, немає способу, jpegформат не підтримує, alpha channelщоб ви не мали прозорості.


0

залежно від того, що ви намагаєтеся зробити із зображенням, можливо, можна перенести альфа-канал до окремого зображення сірого масштабу або бітової маски, а програма, яка використовує зображення, застосує допоміжне зображення як напівпрозорі / прозорі значення . Хоча в кінцевому підсумку краще змінити програму, щоб вона підтримувала альфа-png.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.