이미지가 있는데 위쪽은 더 밝게 만들고 아래쪽은 효과가 없도록 만들고 싶습니다. 따라서 이미지가 처음에는 단색 녹색이었다면 결국에는 연한 녹색에서 녹색으로 그라데이션되는 것처럼 보일 것입니다.
나는 다음과 같은 작업을 수행할 수 있다고 생각했습니다(그라디언트를 마스크로 사용하여 이미지 상단에 흰색 블록을 결합).
convert a.jpg \( +clone -fill white \) \
\( +clone gradient:white-black \) \
-composite out.jpg
또는 이것은 (투명하게 변하는 그라데이션으로 이미지를 '색상화')
convert a.jpg \( +clone 'gradient:black-rgba(0,0,0,0)' \) \
-colorize 50% out.jpg
…하지만 둘 다 작동하지 않습니다.
답변1
convert a.jpg \( +clone -fx 'i/w' \) -compose multiply -composite out.jpg
그러면 이미지 사본이 생성되어-fx
운영자. 공식은 = 0에서 너비까지 i/w
의 모든 픽셀을 검토하여 왼쪽( )에서 출력이 0(검은색)이고 오른쪽( )에서 출력이 1(흰색)이 되도록 합니다.i
w
i == 0
i == w
multiply
그런 다음 왼쪽의 순수한 검정색에서 가장 오른쪽 가장자리의 순수한 원본으로 페이드되도록 구성합니다 .
다음과 같은 작업도 수행할 수 있습니다.
convert a.jpg \( +clone \
-fx 'i/w < 0.2 ? 0.2 : (i/w -0.2)*4 + 0.2' \
\) -compose multiply -composite output.jpg
그러면 이미지의 왼쪽 20%가 80%만큼 어두워지고 왼쪽 40%에서는 효과가 없으며 20%에서 40% 사이에서는 선형적으로 페이드 아웃됩니다.