Заменить прозрачность в изображениях PNG на белый фон - PullRequest
253 голосов
/ 24 февраля 2010

У меня есть несколько изображений PNG с прозрачностью, и мне нужно создать версии со слоем изображения, составленным на белом фоне. Я пробовал разные вещи с помощью операций преобразования изображений Image Magick, но либо ничего не происходит, либо я получаю сообщение об ошибке. Я не хочу переходить на промежуточную форму JPG, потому что мне не нужны артефакты. Конечно, это легко сделать в Gimp, Photoshop или где-то еще, но я бы предпочел написать это из командной строки, потому что таких вещей много.

Пример нерабочей команды Image Magick:

convert img1.png -background white -flatten img1-white.png

Это приводит к ошибке.

Спасибо!

Ответы [ 15 ]

2 голосов
/ 17 декабря 2018

Мне нужно было либо: -alpha background и -flatten, либо -fill.

Я сделал новый PNG с прозрачным фоном и красной точкой посередине.

convert image.png -background green -alpha off green.png не удалось: получилось изображение с черным фоном

convert image.png -background green -alpha background -flatten green.png создает изображение с правильным зеленым фоном.

Конечно, с другим файлом, который я переименовал image.png, он ничего не смог сделать. Для этого файла я обнаружил, что цвет прозрачных пикселей был "# d5d5d5", поэтому я залил этот цвет зеленым:

convert image.png -fill green -opaque "#d5d5d5" green.png заменил прозрачные пиксели на правильный зеленый.

0 голосов
/ 14 ноября 2018

Это -альфа отключена, НЕ -альфа удалить! Загрузка из магазина приложений iOS не удалась, если в каком-либо значке есть альфа-канал !!

Вот как это сделать: mogrify -alpha off * .png

0 голосов
/ 12 сентября 2018

Я видел этот вопрос и ответы, которые мне действительно помогают, но тогда мне нужно было сделать это для большого количества файлов, поэтому, если у вас есть несколько изображений (PNG-изображений) в одной папке, и вы хотите сделать это для всех:

find ./ -name "*.png" -exec convert {} -flatten {} \;
0 голосов
/ 09 сентября 2014

Чтобы фактически удалить альфа-канал из файла, используйте параметр alpha off :

convert in.png -background white -alpha off out.png
0 голосов
/ 30 июня 2014

это создает изображение, просто помещая первое с прозрачностью поверх второго

composite -gravity center ImgWithTransp.png BackgroundSameSizeOfImg.png ResultImg.png

первоначально нашла подсказку на этой записи

...