2012-01-02 227 views
25

我對圖像處理知之甚少,使用的術語更少,所以請耐心等待。如何使用Imagick合併並遮罩圖像?

基本上,我想合併兩個圖像在一起,其中一個將作爲一個面具。該圖像看起來像這樣:
Example
藍色和黃色背景在現實中都是透明的。

此圖像被用作普通照片的遮罩。在圓圈內「伸出」的部分照片需要「裁剪」(不可見),而內部仍然可見。
因此,藍色區域中的所有內容都是不可見的,黃色區域中的所有內容都是可見的。

我真的不知道如何去做,所以任何幫助將不勝感激!

編輯:
我用Imagick的API版本,而不是命令行版本

編輯:
要得到什麼,我想實現的感覺,這裏就是一個例子。

輸入圖像是這樣的:
enter image description here
這是掩模圖像,總是相同的

enter image description here
這是一個圖象的一個例子,動態

enter image description here
這就是最終結果應該看起來像

+0

我真的需要一個答案這個問題。我的知識太有限,無法自己研究,所以我纔開始賞金。如果這個問題需要改進,我會很樂意這樣做。 – 2012-01-04 09:42:08

+0

會命令行版本幫助..? – 2012-01-04 09:46:19

+0

如果無法用API完成,我不得不求助於CLI,但我對API版本有很大的興趣。 – 2012-01-04 09:50:47

回答

59

所以,最後,這應該做你需要的東西:

原圖:

http://i.stack.imgur.com/b7seR.png

不透明掩模:

enter image description here

疊加:

http://i.stack.imgur.com/3ulkM.png

輸出:

enter image description here

代碼:

<?php 
$base = new Imagick('U0R4F.png'); 
$mask = new Imagick('mask.png'); 
$over = new Imagick('3ulkM.png'); 

// Setting same size for all images 
$base->resizeImage(274, 275, Imagick::FILTER_LANCZOS, 1); 

// Copy opacity mask 
$base->compositeImage($mask, Imagick::COMPOSITE_DSTIN, 0, 0, Imagick::CHANNEL_ALPHA); 

// Add overlay 
$base->compositeImage($over, Imagick::COMPOSITE_DEFAULT, 0, 0); 

$base->writeImage('output.png'); 
header("Content-Type: image/png"); 

echo $base; 
?> 

我希望這是正確的吧! 注意:在您的示例中,它看起來像縮減了基本圖像,而我沒有(我的目標僅僅是顯示遮罩是如何完成的)。

+0

這看起來很有希望!我將創建一個蒙版圖像並測試此代碼。 – 2012-01-04 11:17:19

+0

是的,我猜想會發生一些縮放。我現在要測試新的代碼。 – 2012-01-04 12:45:53

+1

太棒了,這幾乎完美!一個問題是,原始圖像中的任何透明度都會轉換爲黑色。有沒有辦法保存Alpha通道? – 2012-01-04 13:00:22

0

http://www.imagemagick.org/Usage/compose/#dstin應該做的伎倆,但你需要使用alpha通道的圖像(這不應該是一個問題)。

編輯:在PHP中,您必須通過它(imagick::COMPOSITE_DSTIN)作爲compositeimage中的參數。 Composite Operator Constants中的其他過濾器也可能對您有用。

+0

這並沒有真正的幫助。當然,我已經找到了寫作功能,但我不知道如何組合可用的工具來創建我需要的結果。 – 2012-01-04 09:52:09

1

您是否試過這個解決方案:https://stackoverflow.com/a/2351173/1093649

在您的服務器上運行它(使用正確的圖像名稱!),並讓我們知道,謝謝。

注:學分去jspash

+0

我已經找到了一個,但它並沒有真正做我想要的。答案的最終結果是,圖像中的藍色和黃色部分保持透明,而黑色邊框顯示「背景」圖像。 – 2012-01-04 10:25:06

+0

太糟糕了,你可以把原始圖像附加到你的文章?這樣,我們可以更好地瞭解您從哪裏開始。 – 2012-01-04 10:37:47

+0

我已經更新了樣本輸入和輸出圖像的問題。 – 2012-01-04 11:05:22

0

這種類型的掩蔽的正在使用許多不同的技術所示例中 ImageMagick的實例,縮略圖,面具和油漆然而 http://www.imagemagick.org/Usage/thumbnails/#mask_paint

但是要注意,所述的掩模和覆蓋圖像的邊緣應該不匹配 此非常重要,或者您可能會遇到最好避免邊緣混疊效應的問題。

提取環的alpha蒙版,可以使用形態學運算符將其減薄到中心線,可用於爲任意隨機「環」形狀生成蒙版。 ImageMagick的例子,骨骼變薄,剪枝 http://www.imagemagick.org/Usage/morphology/#thinning_skeleton

安東尼·蒂森 網站管理員的ImageMagick的例子,和開發人員的ImageMagick

PS:從Elfling不錯的照片