Imagemagick에서 스택을 사용하여 이미지의 일부를 선택적으로 흐리게합니다.

StackOverflow https://stackoverflow.com/questions/376887

문제

Dropshadow가있는 기본 이미지에 텍스트를 주석을 달고 있습니다. 나는 -shadow 옵션을 사용하여 얻은 결과가 마음에 들지 않기 때문에 텍스트를 내려 놓고 흐리게 한 다음 텍스트를 흰색으로 다시 내려 놓고 그림자에서 몇 픽셀 오프셋을 오프셋합니다. 다음은 내가 사용하는 명령입니다.

convert base_image.jpg \
        -font TT0590M_.ttf \
        -fill gray30 \
        -annotate +0+0 '' -gravity North \
        -annotate +72+32 'ABCDEFGHIJKLM' \
        -blur 0x4 \
        -fill white \
        -annotate +72+27 'ABCDEFGHIJKLM' \
        combined.png

내 문제는 -Blur 옵션이 텍스트의 첫 번째 레이어뿐만 아니라 기본 기본 이미지도 흐려진다는 것입니다. 기본 이미지가 아닌 첫 번째 텍스트 레이어 만 흐리기를 원합니다.

스택 사용에 대해 조금 읽고 첫 번째 텍스트 레이어와 블러 명령을 사용하여 분리하려고했습니다. \( \) 다음과 같이 해당 부분 주위에 :

convert base_image.jpg \
        -font TT0590M_.ttf \
        -fill gray30 \
        -annotate +0+0 '' -gravity North \
        \( -annotate +72+32 'ABCDEFGHIJKLM' \
        -blur 0x4 \) \
        -fill white \
        -annotate +72+27 'ABCDEFGHIJKLM' \
        combined.png

결과는 동일합니다. 텍스트 섀도우와 기본 기본 이미지가 모두 블러드되고 있습니다. 나는 스택을 이해하거나 내가 후에 효과를 얻기 위해 어떤 다른 명령을 사용해야하는지 많은 운이 없다고 두려워합니다.

도움이 되었습니까?

해결책

너무 자주 발생하는 것처럼, 나는 질문을 게시 한 후에 이것을 계속해서 쫓아 냈으며, 나는 스스로 해결할 수있었습니다.

중요한 변화는 기본 이미지로 시작하는 대신 빈 투명 캔버스로 시작했다는 것입니다. 텍스트를 올바르게 얻은 후에는 기본 이미지를 스택에 삽입하고 스택에 두 이미지의 순서를 교체 한 다음 컴포지트 유형의 "화면"으로 합성하여 다른 하나의 위에 놓습니다.

가져 오기의 또 다른 메모 : -Channel RGBA는 IM이 작동하는 방식의 특이성으로 인해 텍스트 계층의 투명성과 함께 흐릿한 작동이 필요합니다. 이것이 필요한 이유가 설명됩니다 이 페이지에서.

또한 Windows Systems (쉘 스크립트 대신.

아래 스크립트는 최종 작업 결과 (*Nix 버전)입니다.

convert  \
    -size 500x500 xc:transparent \
    -font TT0590M_.ttf \
    -annotate +0+0 '' -gravity North \
    -fill gray30 \
    -annotate +75+35 'ABCDEFGHIJKLMNOPQR\nABCDEFGHIJKLMNOPQR' \
    -channel RGBA \
    -blur 0x4 \
    -fill white \
    -annotate +72+30 'ABCDEFGHIJKLMNOPQR\nABCDEFGHIJKLMNOPQR' \
    -insert 0 base_image.jpg \
    -swap 0,1 \
    -composite -compose screen \
    combined.png
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top