ImageMagick에서 이미지에 그라디언트를 적용하는 방법은 무엇입니까?

ImageMagick에서 이미지에 그라디언트를 적용하는 방법은 무엇입니까?

이미지가 있는데 위쪽은 더 밝게 만들고 아래쪽은 효과가 없도록 만들고 싶습니다. 따라서 이미지가 처음에는 단색 녹색이었다면 결국에는 연한 녹색에서 녹색으로 그라데이션되는 것처럼 보일 것입니다.

나는 다음과 같은 작업을 수행할 수 있다고 생각했습니다(그라디언트를 마스크로 사용하여 이미지 상단에 흰색 블록을 결합).

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(흰색)이 되도록 합니다.iwi == 0i == 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% 사이에서는 선형적으로 페이드 아웃됩니다.

관련 정보