非常に背の高い画像を作成し、その上に多くの線を描画する PHP スクリプトがあります (組織的な Web のような外観)。私が作成しようとした最も高い画像の場合、線画は画像の中央から下部に向かって突然停止します: 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;
}