imagefill只填充了图像背景的一半?
有人有任何想法吗?
$img = imagecreatefrompng($current);
$kek=imagecolorallocate($img, 255, 255, 255);
imagefill($img,0,0,$kek);
imagejpeg($img,$new,70);
imagedestroy($img);
答案 0 :(得分:0)
imagefill对图像执行Flood-Fill算法,与paint中的bucket fill相同。所以继续填充直到该区域关闭,并且将停止填充。 您应该将原始图像复制到较大的画布中,然后执行图像填充,然后裁剪图像以恢复原始尺寸:
$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);
我没有测试代码,但我认为应该没问题。