2012-11-30 3 views
2

롤오버 배경 이미지로 사용할 이미지를 만들어야합니다. 그것은 8 개의 조각으로 나뉘는 원형 패턴입니다.Imagemagick에서 이미지 알파 마스킹

main-image

을 그리고 여기에 마스크 이미지의 screengrab의 다음은 주요 이미지의 screengrab (투명도와 PNG)입니다. 그것은 주 이미지와 같은 크기이며, '파이 (pie)'피스를 특징으로합니다. 내가 대답은 아주 간단해야한다 생각으로 (모든 대답은 당신이?!을 알고있을 때 간단하지 않습니다) 그래서 대역폭을 절약 할 수 있습니다,하지만 난을 업로드 할 수의 스크린 샷을 포함하고있어

masked-image

원본 파일이 도움이된다면. 여기

내가 새로운 마스크 이미지를 만드는 데 사용하고 명령이다 :

convert main.png \(mask.png -colorspace gray -alpha off \) \ 
-compose copy-opacity -composite new.png 

문제는입니다 검정색 배경에 원본 이미지의 알파를 평평했다 만든 새 이미지 :

new-image

Imagemagick에서 원본 PNG의 투명도를 유지하려면 어떻게해야합니까?

답변

2

이렇게하려면 마스크 처리 된 컴포지션이 필요합니다. http://imagemagick.org/Usage/compose/#mask

이 기술은 원본 이미지 (src)를 동일한 크기 (dst)의 완전 투명 이미지 위에 구성하고 마스크를 사용하여 합성 영역 (마스크)을 제한하는 기술입니다. -composite 연산자의 특별한 경우이며 나머지 작성 방법과 마찬가지로 2가 아닌 3 개의 이미지가 포함됩니다. 이를 위해서는 -compose 모드를 지정하지 마십시오.

이 기술에 필요한 완전 투명 dst를 얻는 가장 빠른 방법은 src 이미지를 복제하고 알파 채널을 제로화 한 다음 src 및 dst의 순서를 바꿔서 해당 이미지가 올바른 순서로 정렬되도록하는 것입니다. -composite 작업은 다음과 같이하십시오

convert main.png -alpha on \(+clone -channel a -fx 0 \) +swap mask.png -composite out.png 
+0

Brilliant! 테스트를 거쳐 완벽하게 작동합니다. 큰 설명도. 감사! –

+0

누구도 RMagick으로 이것을 수행하는 방법을 알고 있습니까? 나는 그것을 이해할 수 없다. –

0

내가 retroj's solution에 만족하지 않았다가 마스크의 그레이 스케일을 무시 보인다.

이것은

날 근무 :

composite -compose Dst_In \(mask.png -alpha copy \) main.png -alpha Set PNG32:result.png 

또는

convert -compose Dst_In \(mask.png -alpha copy \) main.png -alpha Set -composite PNG32:result.png 

Dst_In있어서 두 개의 이미지의 알파 채널을 곱한다. 트릭은 회색 음영 마스크를 -alpha copy으로 끝나는 알파 채널로 변환하는 것입니다.

관련 문제