Как заменить белый цвет фона прозрачным изображением в ImageMagick?
У меня есть изображение в .jpg format
с white background color
. Я хочу, чтобы белый цвет фона был прозрачным в Imagemagick
. Я пробовал много способов, но все же белый фон не может быть удален. Может ли кто-нибудь помочь мне решить эту проблему.
Ответы
Ответ 1
Сначала вам необходимо преобразовать формат изображения из формата .jpg
в .png
, поскольку JPEG не поддерживает прозрачность. Затем используйте следующую команду:
convert image1.png -fuzz 20% -transparent white result.png
Параметр -fuzz
позволяет также преобразовать указанное процентное отклонение от чистого белого цвета в прозрачный. Это полезно, например, когда ваше изображение содержит шум или тонкие градиенты.
Ответ 2
В ваших JPEG файлах не может быть прозрачных цветов фона. Формат файла JPEG не поддерживает прозрачность.
Если вам нужен прозрачный фон, вам нужно преобразовать JPEG в
- либо PNG (высокое качество, размер файла, возможно, больше JPEG)
- или GIF (в случае, если вы можете терпеть низкое качество и диапазон максимально 255 цветов).
Пример команды:
convert your.jpg -transparent white your.png
Ответ 3
Я просто нашел очень аккуратную вещь!
magicwand 1,1 -t 20 -f image -r outside -m overlay -o 0 image.jpg imgOutput.png
Это Fred Weinhaus bash script, который можно загрузить из здесь (только для некоммерческого использования). Также есть около 250 скриптов! и это потрясающе! он сделал именно трюк, чтобы удалить весь фон, сохраняя при этом внутренние точки изображения нетронутыми!
На его странице есть несколько изображений в качестве примеров, поэтому вы выбираете то, что вам нужно положить в командной строке!
Исходное положение 1,1
является общим догадкой, говорящим, что весь контур является фоном.
Обратите внимание, что выход должен быть ".png"
Ответ 4
Это мое решение без волшебства (замените magick
на convert
для im < 7.0):
magick img.png -fuzz 20% -fill none -draw "alpha 1x1 floodfill" result.png