我正在使用GD从数组点数据中绘制一些简单的图表。尝试优化外观 - 即使使用imageantialias
,点之间的线条中仍然存在明显可见的锯齿。 PHP GD对两点之间的界限有什么更好的解决方法?
答案 0 :(得分:0)
GD有许多限制,同样有许多尴尬的解决方法。我建议使用ImageMagick来获得更好的绘图工具而不会有麻烦。
答案 1 :(得分:0)
如何在线上应用imagefilter
的IMG_FILTER_GAUSSIAN_BLUR
,IMG_FILTER_SELECTIVE_BLUR
或IMG_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);