我正在使用透明顏色去除背景顏色的腳本。ImageMagic php中的模糊洪水填充 - 製作透明圖像
劇本是這樣的,並給出了確定的結果,區分紫紅色。
$val = 65535/40;
//divide by fuzz dilution, 1 is none
$val = floatval($val/0.9);
//create white border
$image->borderImage ("rgb(255,255,255)" , 1 , 1);
//make all white fill fuchsia
$image->floodFillPaintImage ("rgb(255, 0, 255)" ,$val*3, "rgb(255,255,255)", 0 , 0, false);
//make fuchsia transparent
$image->paintTransparentImage("rgb(255,0,255)", 0.0, 0.5);
//remove border 1px that was added above
$image->shaveImage (1 , 1);
但是,它留下了圖像周圍顏色的痕跡。這裏有一個例子,當我試圖去除白色背景的電話周圍的邊框 - 你可以清楚地看到邊緣的白色痕跡。
的問題是 - 做一個洪水填補像素0,0時,背景色被着色錯了,我需要一個「模糊」的油漆桶填充功能。 Imagemagic爲floodFillPaintImage提供了「模糊」算法,但「模糊」部分的參數僅用作像素的選擇,而不是模糊着色。
例如,我有一個100%的白色 - 算法正確選擇完美的白色背景,並填充一個新的完美紫紅色圖像。當你設置一個「模糊」參數,算法正確選擇 80%的白色像素(例如),但它再次以100%紫紅色着色。這就是出現丑角的問題。
ImageMagic支持像「真」模糊氾濫填充和「真實」模糊paintTransparentImage?或者有人對如何解決這個問題有更好的想法?
非常感謝你的幫助,它確實幫助我得到的問題開始。然而,EdgexDiff.png有時會產生邊框,這些邊框對於某些圖像來說太薄。這絕對比我原始的方法好,但仍然不是很好 – user151496