2016-12-28 77 views
0

我使用此代碼,使所有白色像素透明:了imagecolortransparent()爲多種顏色

$img = imagecreatefromjpeg('test.jpg'); 
$remove = imagecolorallocate($img, 255, 255, 255); 
imagecolortransparent($img, $remove); 
imagepng($img, 'bla.png'); 

但我也需要一些「幾乎白」的像素是透明的像254, 255, 255等我怎麼能增加呢?

+0

嘗試使用「模糊1%」 –

回答

0

如果您的問題是如何去除具有相似顏色範圍的連續區域;我必須說,使用PHP的GD庫很困難。你應該看看ImageMagick這是一個更強大的圖像處理庫,並有PHP integration

如果您選擇使用ImageMagick,您將可以訪問很多第三方腳本,這些腳本可以完成令人驚歎的圖像處理。其中之一是弗雷德Weinhaus'MagicWand。它符合你的要求。

您可以使用xy座標進行播種,它可以提取該座標的顏色並使其具有可配置的顏色相異閾值(模糊因子),使其透明。看看它如何能匹配的藍色漸變:

magicwand's magic

+0

此代碼只刪除254,255,255。好吧,是我需要做衣服的圖像的白色背景透明和去除一些特定的顏色不是很好的解決方案。首先你會建議什麼? –

+1

答案提示使用「fuzz」。您想使用「模糊」值來判斷顏色與需要影響的目標「透明」顏色的接近程度。在命令行中,它將是「-fuzz 1」或「-fuzz 2」。 PHP綁定當然有一些設置模糊值的等價方法。 –

+0

@AnneSchwarz:正如我所說,我的建議是使用ImageMagick來代替。另外,就我所見,該[MagicWand](http://fmwconcepts.com/imagemagick/magicwand/index.php)腳本正是您所需要的。你可以直接使用它,或者將它的某些部分移植到PHP中供自己使用。 – sepehr