我有一个 PHP 脚本,它创建了一个非常高的图像并在其上画了很多线(一种组织网络的外观)。对于我尝试创建的最高图像,线条画会突然停止在图像的中间到底部:http: //i.imgur.com/4Plgr.png
我使用 imagecreate() 遇到了这个问题,然后我发现 imagecreatetruecolor() 可以处理更大的图像,所以我切换到那个。我仍然有同样的问题,但脚本现在可以处理更大的图像。我认为它应该画大约 1200 条线。该脚本的执行时间不超过 3 秒。这是一个完全执行的图像:http: //i.imgur.com/PaXrs.png
我用 ini_set('memory_limit', '1000M') 调整了内存限制,但我的脚本从未接近限制。
如何强制脚本继续绘制直到完成?或者我如何使用 PHP 来创建使用更少内存的图像(我认为这是问题所在)?
if(sizeof($array[0])<300)
$image=imagecreate($width,$height);
else
$image=imagecreatetruecolor($width,$height);
imagefill($image,0,0,imagecolorallocate($image,255,255,255));
for($p=0; $p<sizeof($linepoints); $p++){
$posx1=77+177*$linepoints[$p][0];
$posy1=-4+46*$linepoints[$p][1];
$posx2=77+177*$linepoints[$p][2];
$posy2=-4+46*$linepoints[$p][3];
$image=draw_trail($image,$posx1,$posy1,$posx2,$posy2);
}
imagepng($image,"images/table_backgrounds/table_background".$tsn.".png",9);
imagedestroy($image);
function draw_trail($image,$posx1,$posy1,$posx2,$posy2){
$black=imagecolorallocate($image,0,0,0);
if($posy1==$posy2)
imageline($image,$posx1,$posy1,$posx2,$posy2,$black);
else{
imageline($image,$posx1,$posy1,$posx1+89,$posy1,$black);
imageline($image,$posx1+89,$posy1,$posx1+89,$posy2,$black);
imageline($image,$posx1+89,$posy2,$posx2,$posy2,$black);
}
return $image;
}