ImageMagick: как сгладить только часть изображения - PullRequest
1 голос
/ 15 июня 2019

Задача

Я хочу выровнять только часть изображения.

Пример изображения

Возьмем, к примеру, это изображение:

enter image description here

Он имеет прозрачный фон, который я хотел бы сохранить (а не воссоздавать), а также прозрачность между корпусом кабеля и устройством (корпус находится на верхней части устройства). Все остальные прозрачные части изображения (то есть прозрачность в самой машины) должны быть выровнены.

Что я уже знаю

Я видел этот вопрос, но он касается только не полностью прозрачных пикселей, однако я бы хотел растушевать все не полностью непрозрачные пиксели в части изображения.

Я использую эту команду для выравнивания всего изображения:

convert -flatten input.png output.png

1 Ответ

1 голос
/ 15 июня 2019

Я не совсем понимаю, что вы пытаетесь сделать, может быть, вы могли бы добавить другое изображение, показывающее ожидаемый результат, пожалуйста?

В то же время вы можете извлечь слой альфа / прозрачности в отдельное изображение, которое вы можете воспроизвести для своего сердца:

convert input.png -alpha extract alpha.png

enter image description here

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

convert -size 800x600 xc:magenta alpha.png -compose copyalpha -composite result.png

enter image description here

Заполните внешний фон голубым, как это, чтобы сохранить его в качестве временного цвета, который мы можем найти позже:

convert alpha.png -fill cyan -draw 'color 0,0 floodfill' a.png

enter image description here

Теперь сделайте все, что не голубым, белым, а затем все, что голубым, верните черному:

convert a.png -fuzz 80% -fill white -opaque black -fuzz 5% -fill black -opaque cyan b.png

enter image description here

...