提高PHP GD生成图像的质量

前端之家收集整理的这篇文章主要介绍了提高PHP GD生成图像的质量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我将开始使用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].到目前为止,您的图像非常简单,这可能没什么区别,但是如果您生成更复杂的图像则会很重要.

如果您进行这两项更改,您的图像将确保具有完美的质量.

猜你在找的PHP相关文章