2015-01-08 6 views
0

나는 Wand (파이썬 용 ImageMagick 바인딩)를 사용하여 다른 이미지에 이미지를 그려 넣고 싶다. 소스 이미지는 대상 이미지 (지정된 위치에서)를 완전히 대체해야합니다.imagemagick에서 다른 이미지로 이미지를 그립니까?

destinationImage.composite_channel(channel='all_channels', image=sourceImage, operator='replace', left=leftPosition, top=topPosition) 

을하지만 간단하거나 빠른 해결책이 있는지 궁금 해서요 :

내가 사용할 수 있습니다.

답변

2

그러나 간단하거나 빠른 해결책이 있는지 궁금합니다.

아니요. 의 범위에서 이것은 가장 빠른 방법 중 하나입니다. 단순함을 위해 이미 한 줄의 코드로 모든 작업을 수행하고 있습니다. 아마도 Image.composite으로 이것을 줄일 수 있습니다.

destinationImage.composite(sourceImage, leftPosition, topPosition) 

그러나 현재 솔루션의 가독성이 떨어집니다. channel='all_channels' & operator='replace' kwargs와 함께 전체 명령을하면 장기적으로 도움이됩니다. 1 년 후에 코드를 다시 방문하십시오.

destinationImage.composite(sourceImage, leftPosition, topPosition) 
# versus 
destinationImage.composite_channel(channel='all_channels', 
            image=sourceImage, 
            operator='replace', 
            left=leftPosition, 
            top=topPosition) 

바로 API 문서를 치지 않고 두 번째 옵션은 모든 채널에서 소스 이미지로 대상을 바꾸는 것입니다. 이러한 사실은 첫 번째 변형에서 숨겨 지거나 추정됩니다.

+0

감사합니다. 내가 틀렸다면 말해 줘요.하지만 composite_channel과 composite_channel (channel = 'all_channels', operator = 'replace')는 같은 작업을 수행하지 않습니다. 첫 번째 경우에는 두 이미지가 섞여 있습니다. 첫 번째 이미지의 완전히 투명한 부분은 대상 이미지를 변경하지 않음) 반면 두 번째 경우에는 대상 이미지가 소스 이미지 (관심 영역에서)로 완전히 대체됩니다. –

+0

@ arthur.sw 당신은 그들이 다른 작업을 수행한다는 점에서 정확합니다. 그들은 C-API와 ** 복합 ** [기본값은 끝났습니다] (https://github.com/dahlia/wand/blob/master/wand/image.py#L1643) 작업을 분리합니다. 그러나, 당신이하고있는/기대하고있는 것의 높은 수준을 보지 않고, 나는 나의 예에서 한 이미지의 행동에 초점을 맞추고있다. – emcconville

관련 문제