2013-05-09 140 views
2

我要畫兩個點之間的簡單曲線。更具體地說,任意大小的圖像的左上角和右下角。繪製兩點之間的曲線在PHP

我試過使用imagearc,但顯然這不是我要找的。 爲了說明我的意思: curved line

我找不到任何功能,幫我一起,所以任何幫助,將不勝感激:)

+0

是否有貝塞爾曲線函數? ['canvas'有它(http://jsfiddle.net/zzV2T/) – alex 2013-05-09 23:44:04

+0

看看你是否能找到一個貝塞爾曲線函數/庫:http://cubic-bezier.com/#.34,.81 ,. 65 0.15 – Patashu 2013-05-09 23:45:44

回答

1

我解決它使用imagearc畢竟創建自己的曲線。

訣竅是設置左下角爲中心,-90°起始角,0°結束角度和圖像大小的兩倍:

//GET VARS 
$width = $_GET['width']; 
$height = $_GET['height']; 

//CREATE IMGS 
$image = imagecreatetruecolor($width, $height); 
$color = imagecolorallocate($image, 255, 0, 0); 

imagearc( $image, 
      0, 0, //center point = bottom-left corner 
      $width*2, $height*2, //size = image size * 2 
      -90, //top left 
      0, //bottom right 
      $color); 


//OUTPUT IMAGE 
header('Content-Type: image/png'); 
imagepng($image); 

//DESTROY IMAGE 
imagedestroy($image); 

看起來像這樣: http://www.schizosplayground.com/pers/curvedlinetest.php?width=132&height=163

4

你可以使用ImageMagick的,而不是圖像GD的。 Image gd沒有內置的曲線支持。

如果你沒有使用ImageMagick的可能性,你仍然可以使用imagesetpixel並用一個簡單的德卡斯特里奧算法

0

我通過經由任何方便易函數生成與點($多邊形)的載體解決類似的問題,然後畫了線其間的點:

$numberofpoints=count($polygon)/2-1; // XY coordinates, so points is just half and subtracting the end point 
for ($i=0; $i < $numberofpoints;$i++) { 
    imageline($image, $polygon[2*$i], $polygon[2*$i+1], $polygon[2*$i+2], $polygon[2*$i+3], $Color); // connect two consecutive points with a line 
}