У меня есть несколько PNG-изображений с прозрачностью, и мне нужно создать версии со слоем изображения, составленным на белом фоне. Я пробовал разные вещи с операциями преобразования изображений Image Magick, но либо ничего не происходит, либо я получаю ошибку. Я не хочу переходить на промежуточную форму JPG, потому что я не хочу артефактов. Конечно, это легко сделать в Gimp, Photoshop или где-то еще, но я бы предпочел написать это из командной строки, потому что таких вещей много.
Пример нерабочей команды Image Magick:
convert img1.png -background white -flatten img1-white.png
Это приводит к ошибке.
Спасибо!
png
imagemagick
alpha-transparency
Заостренный
источник
источник
Ответы:
Это работает для меня:
Ссылки на документацию:
-flatten
опция командной строки-layers
опция командной строки (-flatten
эквивалентна-layers flatten
)источник
-flatten
. Это сгладит страницы в одну страницу.mogrify -flatten *.png
всякий случай не забудьте сделать резервную копию. Более подробная информация здесь: imagemagick.org/script/mogrify.phpПример:
Не стесняйтесь заменить
white
на любой другой цвет, который вы хотите. Документация Imagemagick говорит об этой-alpha remove
операции:источник
-background white
это не нужно (хотя, вероятно, для других цветов).-alpha off
.convert image.png -background white -alpha off white.png
произвел изображение с черным фоном.convert image.png -background "#00ff33" -alpha off 00ff33.png
произвел черный фонСвести изображение и применить фоновое изображение прямо в ImageMagick
Тем не менее, порядок команд очень важен
Чтобы применить любой фон к прозрачному изображению и сгладить его, сначала примените фон, а затем сгладьте его. Обратное не работает.
источник
Единственный, который работал для меня, был смесью всех ответов:
источник
... -background "#010203" ...
вместо белого.mogrify -background white -flatten */*.png
-alpha remove
было то, что сделал это для меняВот как заменить одно и то же изображение во всех папках в каталоге белым вместо прозрачного:
mogrify -background white -flatten */*.png
источник
Использование -flatten привело меня в бешенство, потому что -flatten в сочетании с влажным урожаем и изменением размеров просто не работает. Официальный и для меня единственный правильный способ - это «убрать» альфа-канал.
-альфа удалить -альфа выкл (не требуется с JPG)
Смотрите документацию: http://www.imagemagick.org/Usage/masking/#remove
источник
convert imgWithTranspBkg.png -alpha remove -alpha off bkg.jpg resultImg.png
Альфа Удалить раздел ImageMagick Использование Руководство предполагает , используя
-alpha remove
опцию, например:... используя
-background
цвет по вашему выбору.Руководство гласит:
Это дополнительно добавляет примечание:
Таким образом, если вам не нужен альфа-канал, вы можете уменьшить размер выходного изображения, добавив
-alpha off
параметр, например:Есть и другие подробности о других, часто используемых методах удаления прозрачности, описанных в разделе Удаление прозрачности из изображений .
В этот раздел включено упоминание важного предостережения относительно использования
-flatten
в качестве метода удаления прозрачности:Таким образом, если вы конвертируете несколько изображений одновременно, например, генерируете миниатюры из файла PDF,
-flatten
вы не будете делать то, что вам нужно (это сведет все изображения для всех страниц в одно изображение). С другой стороны, использование этой-alpha remove
техники все равно приведет к созданию нескольких изображений, каждое из которых будет удалено из прозрачности.источник
Похоже, что ваша команда верна, поэтому проблема может быть в отсутствии поддержки PNG (). Вы можете проверить
convert -list configure
или просто попробовать следующее:источник
libpng12-0
установленным и работающим. Можете ли вы увидеть png, если вы запустите это?convert -list configure | grep \png
Это не совсем ответ на ваш вопрос, но я нашел ваш вопрос, пытаясь выяснить, как удалить альфа-канал, поэтому я решил добавить этот ответ здесь:
Если вы хотите удалить альфа-канал с помощью imagemagick, вы можете использовать эту команду:
источник
Похоже, мое решение установить «графическую магию» поверх «графической магии» имеет некоторые неровности - когда я переустанавливаю подлинную старую «графическую магию», тогда приведенная выше команда работает отлично.
редактирование , долгое время спустя - на днях я проверю, исправила ли эта проблема "графика магии".
источник
Мне нужно было либо:
-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
заменил прозрачные пиксели на правильный зеленый.источник
convert image.png -background green -alpha background -alpha off green.png
илиconvert image.png -background green -alpha background -alpha remove green.png
илиconvert image.png -background green -flatten green.png
Параметр без командной строки: откройте файл PNG в Windows Paint и нажмите «Сохранить».
источник
это создает изображение, просто помещая 1-й с прозрачностью поверх 2-го
изначально нашла подсказку на этот пост
источник
Чтобы фактически удалить альфа-канал из файла, используйте опцию альфа-отключения :
источник
Я видел этот вопрос и ответы, которые действительно помогают мне, но тогда мне нужно было сделать это для большого количества файлов, поэтому, если у вас есть несколько изображений (PNG-изображений) в одной папке, и вы хотите сделать это для всех:
источник
Альфа отключена, НЕ альфа удаляется! Загрузка из магазина приложений iOS не удалась, если на любом значке есть альфа-канал !!
Вот как это сделать: mogrify -alpha off * .png
источник