我将开始使用GD库在
PHP中构建地图生成器.我使用lib生成了一些图像,但它们没有很好的质量.我只是想知道有一些方法可以提高图像的质量.
生成的图像是:
我的代码是:
<?PHP $canvas = imagecreate(800,350); imagecolorallocate($canvas,255,255); $pink = imagecolorallocate($canvas,105,180); $white = imagecolorallocate($canvas,255); $green = imagecolorallocate($canvas,132,135,28); imagestring( $canvas,20,290,25,"Quality is not the best :(",$green ); function drawlineBox($x1,$y1,$x2,$y2,$height,$color){ global $canvas; imagesetthickness ( $canvas,1 ); for ($i=1; $i < $height; $i++){ imageline( $canvas,$x1,$color ); $y1++; $y2++; } } drawlineBox(20,780,300,30,$green); drawlineBox(20,$pink); header('Content-Type: image/jpeg'); imagejpeg($canvas); imagedestroy($canvas); ?>
imagejpeg [
docs]对图像质量进行论证.它默认为75,但您可以将其增加到最多100个.例如:
imagejpeg($canvas,NULL,90);
但是,对于具有大量连续色彩和清晰线条的生成图形,JPEG可能不是最佳选择. PNG更适合这些类型的图像,并且可能会以更小的尺寸为您提供完美的质量. imagepng [docs]有几个选项,但默认值应该没问题:
header('Content-Type: image/png'); imagepng($canvas);
您正在使用imagecreate [docs]来制作图像.这会创建一个“基于托盘”的图像:只能使用有限数量的颜色的图像.这与GIF或8位PNG的较低质量相匹配,但由于您不使用这些格式,您应该使用imagecreatetruecolor [docs].到目前为止,您的图像非常简单,这可能没什么区别,但是如果您生成更复杂的图像则会很重要.
如果您进行这两项更改,您的图像将确保具有完美的质量.