我想在两点之间画一条简单的曲线。更具体地说,任意大小的图像的左上角和右下角。
我尝试使用 imagearc,但显然这不是我想要的。为了说明我的意思:
我找不到任何功能来帮助我,所以任何帮助将不胜感激:)
您可以使用 ImageMagick 代替 image gd。Image gd 没有对曲线的内置支持。
如果您无法使用 ImageMagick,您仍然可以使用imagesetpixel
简单的 de casteljau 算法创建自己的曲线
毕竟我使用 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
我通过任何方便的函数生成带有点($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
}