2015-01-08 32 views
0

我想繪製一個圖像到另一個圖像與魔杖(Python的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將從長遠來幫助你。考慮一年內重新審視代碼。

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

馬上,沒有擊中API文檔,你知道第二種選擇是用所有通道的源圖像替換目標。這些事實在第一種變化中被隱藏或假定。

+0

謝謝!告訴我,如果我錯了,但我明白'composite()'和'composite_channel(channel ='all_channels',operator ='replace')'不執行相同的操作:在第一種情況下,兩個圖像混合第一幅圖像的完全透明的部分不會改變目標圖像),而在第二種情況下,目標圖像將被源圖像完全替換(在感興趣的區域中)。 –

+0

@ arthur.sw你是正確的,他們執行不同的操作。它們將C-API和**複合** [默認爲'over'](https://github.com/dahlia/wand/blob/master/wand/image.py#L1643)操作分開。但是,如果沒有看到你在做什麼/期望的高級別,我將關注一個圖像在另一個圖像上的行爲。 – emcconville