我使用GD来绘制阵列点数据中的一些简单图表。试图优化外观 - 即使使用imageantialias
,点之间的线中仍然存在明显可见的锯齿。什么是更好的方式来PHP的两个点之间的一条线GD抗锯齿?PHP GD更强更强Antialias
2
A
回答
0
它看起来最简单的解决方案是解压缩JPGraph(http://jpgraph.net),并使用图表类 - 线出来惊人的反锯齿,我敢说,很漂亮!
(ImageMagick的是一种痛苦设立在CentOS服务器 - 吹起来,减少上面的方法似乎并没有提高抗锯齿..)
0
GD和许多尴尬的解决方法有很多限制。我建议使用ImageMagick代替以获得更好的绘图工具。
0
如何应用imagefilter
的IMG_FILTER_GAUSSIAN_BLUR
,IMG_FILTER_SELECTIVE_BLUR
或IMG_FILTER_SMOOTH
就行了?
0
可能是这样的情况,您的行是正确antialiased,但您还需要伽马校正图像。我不知道GD是否对你来说很容易,但是我已经在自己的渲染代码中看到了这种效果,并且适当的gamma值取决于你使用的显示器。
0
对不起,看来我downvoted你(或我改变了这一切?看来我现在评论家徽章)
我使用了一些黑客,它看起来没有那么糟糕
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);
如何将它应用在线上?将其应用于图像资源只会使其看起来模糊不清,但锯齿仍然很明显... – ina 2010-11-16 07:12:41
在可以叠加在背景图像上的单独透明图像上创建线条 – stillstanding 2010-11-16 07:20:33
原始图像只有一行 - 应用模糊/平滑的过滤器只是模糊了线条,但仍然存在问题http://ina-zntvj.posterous.com/php-gd-jaggedness – ina 2010-11-16 07:37:01