2014-01-16 64 views
0

imagefill只填充圖像背景的一半?imagefill只填充圖像背景的一半?

任何人有任何想法?

$img = imagecreatefrompng($current); 
$kek=imagecolorallocate($img, 255, 255, 255); 
imagefill($img,0,0,$kek); 
imagejpeg($img,$new,70); 
imagedestroy($img); 

Example Example

+0

你試過了嗎?imagepng($ img);'? – aldanux

+0

我沒有,但感謝你的'關鍵字',我會調查! – Stuart

回答

0

imagefill執行洪水填充算法對圖像,相同鬥填漆一樣。所以繼續填充直到該區域關閉,並且填充將停止。 你應該原始圖像複製到更大的畫布,然後執行imagefill,然後裁剪圖像agian要回原來的大小:

$img = imagecreatefrompng($current); 
$width=imagesx($img); 
$height=imagesy($img); 
$newimg=imagecreatetruecolor($width+2,$height+2);//1 pixcel larger from each side 
imagecopy($newimg,$img,1,1,0,0,$width,$height); 
$kek=imagecolorallocate($img, 255, 255, 255); 
imagefill($img,0,0,$kek); 
imagecopy($img,$newimg,0,0,1,1,$width-2,$height-2);//back to the original size 
imagejpeg($img,$new,70); 

我沒有測試的代碼,但我認爲這應該是確定。