Я знаю, что довольно поздно для вечеринки, но многое изменилось с тех пор, как этот вопрос был впервые опубликован, поэтому вот как вы можете сделать это сегодня, используя как минимум версию 2.15.4
из 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)