在PHP中的两点之间绘制一条曲线

时间:2013-05-09 23:36:17

标签: php image line

我想在两点之间绘制一条简单的曲线。更具体地说,是任意大小的图像的左上角和右下角。

我尝试使用imagearc,但显然这不是我想要的。 说明我的意思: curved line

我找不到任何帮助我的功能,所以任何帮助都会受到赞赏:)

3 个答案:

答案 0 :(得分:4)

您可以使用ImageMagick而不是图像gd。 Image gd没有对曲线的内置支持。

如果您无法使用ImageMagick,您仍然可以使用imagesetpixel并使用简单的de casteljau算法创建自己的曲线

答案 1 :(得分: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

答案 2 :(得分:0)

我通过任何方便的函数生成带点($ polygon)的向量,然后在点之间画了一条线来解决类似的问题:

$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
}