Установите альфа в соответствии с градиентом с помощью imagemagick - PullRequest
0 голосов
/ 27 марта 2019

Можно ли установить альфа-канал изображения в соответствии с градиентом с помощью ImageMagick?

Мне бы хотелось, чтобы пиксели на левой границе изображения были прозрачными на 100%, а пиксели на правой границе - на 100% непрозрачными, а посередине - с более низкими значениями прозрачности.

Или в более общем случае - с учетом изображения в градациях серого установите альфа-канал другого изображения как функцию значений черно-белого изображения (black = 100% alpha, white 0% alpha).

Ответы [ 2 ]

2 голосов
/ 27 марта 2019

Simple.Вы бы использовали -composite CopyOpacity для установки альфа-канала из маски градиента.

Учитывая, что у меня есть следующие изображения.image.png & transparent_mask.png

image transparent_mask

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

convert image.png transparent_mask.png -compose CopyOpacity -composite output.png

output

0 голосов
/ 27 марта 2019

С ImageMagick вы можете использовать «-sparse-color», чтобы применить градиент только к альфа-каналу, чтобы получить результат, который вы описываете.

convert in.png -alpha set -background none -channel A \
    -sparse-color barycentric "0,0 none %[w],0 white" +channel out.png

Эта команда начинается с активации альфа-канала и установкицвет фона до прозрачного.Затем он использует -channel A, чтобы применить следующую операцию только к альфа-каналу.Операция «-sparse-color» говорит ему начать с прозрачного на дальнем левом краю пикселя «0,0» и перейти к непрозрачному в пикселе «% [w], 0».«% [W]» означает ширину или крайний правый край.

Хотя существует много способов для достижения эффекта, который вы описали, с помощью «-sparse-color» вы можете легко начать градиенти заканчиваться в любом месте изображения, не создавая промежуточных маскирующих изображений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...