2010-11-16 31 views
2

我使用GD來繪製陣列點數據中的一些簡單圖表。試圖優化外觀 - 即使使用imageantialias,點之間的線中仍然存在明顯可見的鋸齒。什麼是更好的方式來PHP的兩個點之間的一條線GD抗鋸齒?PHP GD更強更強Antialias

回答

0

它看起來最簡單的解決方案是解壓縮JPGraph(http://jpgraph.net),並使用圖表類 - 線出來驚人的反鋸齒,我敢說,很漂亮!

(ImageMagick的是一種痛苦設立在CentOS服務器 - 吹起來,減少上面的方法似乎並沒有提高抗鋸齒..)

0

GD和許多尷尬的解決方法有很多限制。我建議使用ImageMagick代替以獲得更好的繪圖工具。

0

如何應用imagefilterIMG_FILTER_GAUSSIAN_BLUR,IMG_FILTER_SELECTIVE_BLURIMG_FILTER_SMOOTH就行了?

+0

如何將它應用在線上?將其應用於圖像資源只會使其看起來模糊不清,但鋸齒仍然很明顯... – ina 2010-11-16 07:12:41

+0

在可以疊加在背景圖像上的單獨透明圖像上創建線條 – stillstanding 2010-11-16 07:20:33

+0

原始圖像只有一行 - 應用模糊/平滑的過濾器只是模糊了線條,但仍然存在問題http://ina-zntvj.posterous.com/php-gd-jaggedness – ina 2010-11-16 07:37:01

0

可能是這樣的情況,您的行正確antialiased,但您還需要伽馬校正圖像。我不知道GD是否對你來說很容易,但是我已經在自己的渲染代碼中看到了這種效果,並且適當的gamma值取決於你使用的顯示器。

+0

對於我的測試圖,它是白色的bg,黑色的線...... – ina 2010-11-16 07:04:52

+0

即使有黑白圖像,您仍可能需要伽馬校正它。基本上,代碼會將值127放到像素陣列中,希望獲得中等灰度的陰影,但是您的顯示器會將其更接近白色或黑色,並且會消除抗鋸齒效果。 – xscott 2010-11-16 07:07:06

+0

我不是一個PHP的傢伙,但它看起來像「布爾imagegammacorrect(資源$圖像,浮動$ inputgamma,浮動$ outputgamma)」可能會有所幫助。 – xscott 2010-11-16 07:09:10

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);