RMagick удаляет белый фон с изображения и делает его прозрачным

Мне нужно удалить белый фон с этого изображения и сделать фон прозрачным. Так что это просто черный тик на прозрачном фоне, экспортируемый как png.

например. Turn

enter image description here

В

enter image description here

Любые идеи?

Ответ 1

convert image.png -matte -fill none -fuzz 1% -opaque white result.png

Заменяет что-либо белое прозрачным. Опция fuzz включает все, что почти белое.

Ответ 2

Я знаю, что я очень опаздываю на вечеринку, но многое изменилось с тех пор, как этот вопрос был впервые опубликован, так вот как вы можете сделать это сегодня, используя хотя бы версию 2.15.4 of rmagick

Предполагая, что у вас есть изображение где-то доступно:

image = Magick::Image.new(path_to_file)
image.background_color = 'none'

Если вы также хотите обрезать изображение так, чтобы оно было только размером с границей, просто используйте .trim!

image.trim!

EDIT:

Выключение решения выше не работает для всех случаев использования. Более общее решение таково:

# the image needs to be in 'PNG' format
image.format = 'PNG'

# set a fuzz on the image depending on how accurate you want to be
image.fuzz = '10%'

# get the image background color
background_color = image.background_color

# convert pixels based on their color to being transparent
# the fuzz set above controls how accurate the conversion will be
image.paint_transparent(background_color)

Ответ 3

С помощью v6.8.4-Q16, используя следующую команду:

convert nike.png -matte -fill none -fuzz 1% -opaque white nikeOutput.png

Результаты в:

enter image description here

Вот команда, которую я использую:

convert nike.jpg -transparent white NikeProd.png

enter image description here

enter image description here