Как заменить белый цвет фона прозрачным изображением в 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