У меня есть png с контуром объекта неправильной формы, который я хочу превратить в маску. Мне нужно залить салон черным цветом, а затем поменять местами черное и белое. Это 8-битная шкала серого со значениями только 0 и 255.
Я не могу заполнить внешнюю часть, оставив внутреннюю часть белой, так как сам контур должен быть включен в положительную область. (Предположим, что значения массива для черного, белого и красного цветов уже определены.)
mask = Vips::Image.new_from_file(fl)
mask = mask.draw_flood(black, center_x, center_y, :equal => true) * -1
Это возвращает полностью черный растр. Бу ху! Это работает, но некрасиво и неэффективно.
mask = mask.draw_flood(black, center_x, center_y, :equal => true)
mask = mask.draw_flood(red, 0, 0, :equal => true)
mask = mask.draw_flood(white, center_x, center_y, :equal => true)
mask = mask.draw_flood(black, 0, 0, :equal => true)
Кто-нибудь знает более элегантное решение? Спасибо за любое руководство.