2015-02-24 56 views

回答

0

當然,我正在使用Imagemagick的命令行,但也有PHP綁定可用。 ImageMagick的是安裝在大多數Linux distors以及適用於Windows和OS X.

的命令是這樣的:

convert base.gif wallpaper.png -fx "u.r<0.1 && u.g<0.1 &&u.b<0.1? v : u" out.png 

使用基本映像,並從另一個問題,我回答了一些牆紙。

基本上,-fx運算符允許您自己處理。所以,我說如果原始圖像的紅色通道小於10%(即非常暗),綠色和藍色,則用第二張圖像(壁紙)中的相應像素替換該像素。 te第一圖像的像素被稱爲u,而第二圖像(壁紙)的像素被稱爲v。所以u.r指的是第一個圖像像素的紅色成分。

enter image description here

你可以得到一個小票友,避免異常和孤獨像素像在冰箱的門,在地毯上後牆的左下角。在這裏,我將第三幅圖像引入處理中的原始副本,但是我將其閾值和中值濾波器設置爲閾值以減少異常值。該命令的第一行對應於基本圖像,第二行指向已過濾的基本圖像,第三行指向壁紙。我現在將基本圖像的像素稱爲u[0],將過濾後的基本圖像的像素表示爲u[1],將壁紙的像素表示爲u[2]

convert base.gif          \ 
    \(base.gif -depth 8 -threshold 1 -median 3x3 \) \ 
    wallpaper.png          \ 
    -fx "u[1].r==0.0 ? u[2]:u[0]"      \ 
    out.png 

您可能會發現-fx操作慢,如果你有大量的圖片做的,所以你可以繼續這樣吧。首先通過閾值和中值濾波來去除異常值,從而製作出黑色區域的好蒙版。

convert base.gif -depth 8 -threshold 1 -median 3x3 -negate mask.png 

enter image description here

現在採取的牆紙和掩蓋其不透明度與遮罩,然後複合結果在基礎圖像:

convert wallpaper.png     \ 
     mask.png      \ 
     -compose copyopacity -composite \ 
     base.gif      \ 
     -compose dstover -composite  \ 
     result.png 
+0

嘿,感謝這個答案,但你可以幫助我的PHP轉換?我使用以下代碼 exec('C:/ Program Files/ImageMagick-6.9.0-Q16/convert Naamloos-1.gif naamloos.jpg -fx「ur <0.1 && ug <0.1 && u.b <0.1?v :u「out.png'); 但它不會工作 – Keith666 2015-02-25 12:01:23

+0

什麼是錯誤信息?你可以讓它在命令提示符下工作嗎? – 2015-02-25 12:03:45

+0

GET http://localhost/Image/out.png 404(Not Found) – Keith666 2015-02-25 12:04:43