У меня есть 32-битное PNG-изображение, подобное этому:
Отображается здесь с фоном шахматной доски для наглядности, но вместо шахматной доски изображение фактически прозрачное (дляВаша ссылка: оригинальное 32-битное изображение ).Как вы можете видеть, по краям и вправо красные пиксели постепенно исчезают с непрозрачного на прозрачный.
Если бы я отображал это 32-битное изображение поверх синего фона, пиксели вокругкрая и вправо постепенно исчезнут с красного на синий.
Теперь мне нужно преобразовать это изображение в 8-битный PNG с двоичной альфа-версией.Я хочу, чтобы полностью прозрачная область оставалась полностью прозрачной , но частично прозрачные пиксели постепенно смешивались с намеченным фоновым / матовым цветом , в данном примере синим.
Так что-то вроде этого:
Однако я не могу понять, как это сделать с помощью ImageMagick (используя ImageMagick 7.0.8-26 на Mac).Я попытался сделать следующее:
magick original.png -background 'rgba(0,0,255,0)' png8:output.png
Но это приводит к:
Кажется, что синий цвет фона вообще игнорируется,и просто преобразуйте прозрачность в двоичную (возможно, с полной непрозрачностью для ≥128 или полностью прозрачной для <128). </p>
Также, если я укажу rgb(0,0,255)
в качестве цвета фона (то есть без альфа), результат будет таким же.
Есть ли в ImageMagick какой-нибудь умный вариант «смешивание фона для частично прозрачных пикселей», о котором я не знаю?
В противном случае, я предполагаю, что мне следует каким-то образом извлечь двоичное растровое изображение, в котором исходное изображение полностью прозрачно (т.е. имеет альфа-значение или непрозрачность 0), затем сгладить изображение на выбранном мной фоне, а затем повторно-применить булево альфа-изображение снова.Но не совсем уверен, как это сделать.