Создайте фигуру с libvips ruby - PullRequest
0 голосов
/ 30 мая 2020

Как преобразовать картинку любого цвета и формы в ее форму? В качестве примера я прикрепил входное изображение и желаемый результат. Мне нужно сделать это преобразование с помощью гемов ruby и ruby -vips. Вообще говоря, мне нужно заполнить все, что не является альфа-каналом, одним цветом.

Input

Output

1 Ответ

2 голосов
/ 30 мая 2020

Вы можете использовать [ ], чтобы получить полосы из изображения. Ваше изображение - RGBA, поэтому 0, 1 и 2 - это R, G и B, а 3 - это A.

alpha = image[3]

alpha channel of sample image

Вы можете использовать диапазоны, например:

rgb = image[0..2]

Получает первые три диапазона. bandsplit разбивает изображение на массив однополосных изображений:

r, g, b, a = image.bandsplit

Альфа имеет 0 для прозрачности и 255 для solid, и похоже, что вы предпочли бы обратное. Следовательно:

mask = image[3].invert
...