PHP GD Stronger Antialias

时间:2010-11-16 06:45:42

标签: php gd antialiasing

我正在使用GD从数组点数据中绘制一些简单的图表。尝试优化外观 - 即使使用imageantialias,点之间的线条中仍然存在明显可见的锯齿。 PHP GD对两点之间的界限有什么更好的解决方法?

5 个答案:

答案 0 :(得分:0)

GD有许多限制,同样有许多尴尬的解决方法。我建议使用ImageMagick来获得更好的绘图工具而不会有麻烦。

答案 1 :(得分:0)

如何在线上应用imagefilterIMG_FILTER_GAUSSIAN_BLURIMG_FILTER_SELECTIVE_BLURIMG_FILTER_SMOOTH呢?

答案 2 :(得分:0)

可能的情况是你的 是正确的抗锯齿,但你还需要对图像进行伽马校正。我不知道GD是否让你这么容易,但我已经在我自己的线渲染代码中看到了效果,并且相应的伽玛值取决于你正在使用的显示器。

答案 3 :(得分:0)

看起来最简单的解决方案是解压缩JPGraph(http://jpgraph.net),并使用图表类 - 线条出现惊人的抗锯齿,我敢说,非常漂亮!

(ImageMagick在CentOS服务器上设置很痛苦 - 上面的炸毁和降低方法似乎没有改善抗锯齿效果。)

答案 4 :(得分:0)

抱歉,似乎我对你贬低了(或者我改变了?似乎我现在有了评论家徽章)

我使用了一些黑客,看起来并不那么糟糕

http://i42.tinypic.com/72tzes.jpg

http://i42.tinypic.com/290yidi.png

我只是在主线后面画了几条颜色较少的线

$arColor = imagecolorsforindex($im, $color);
$AAcolor = imagecolorallocatealpha($im, $arColor['red'], $arColor['green'], $arColor['blue'], 112);

imageline($im,round($prevX+1),round($prevY),round($x),round($y+1),$AAcolor);
imageline($im,round($prevX),round($prevY-1),round($x+1),round($y),$AAcolor);
imageline($im,round($prevX-1),round($prevY),round($x),round($y-1),$AAcolor);
imageline($im,round($prevX),round($prevY+1),round($x-1),round($y),$AAcolor);
imageline($im,round($prevX),round($prevY),round($x),round($y),$color);