imageopenpolygon()
(PHP 7 >= 7.2.0)
Draws an open polygon
说明
imageopenpolygon(resource $image,array $points,int $num_points,int $color): bool
imageopenpolygon() draws an open polygon on the given$image. Contrary to imagepolygon(), no line is drawn between the last and the first point.
参数
- $image
由图象创建函数(例如imagecreatetruecolor())返回的图象资源。
- $points
An array containing the polygon's vertices, e.g.:
points[0] = x0 points[1] = y0 points[2] = x1 points[3] = y1 - $num_points
Total number of points(vertices), which must be at least 3.
- $color
A color identifier created with imagecolorallocate().
返回值
成功时返回TRUE,或者在失败时返回FALSE。
范例
imageopenpolygon() example
<?php
// Create a blank image
$image = imagecreatetruecolor(400, 300);
// Allocate a color for the polygon
$col_poly = imagecolorallocate($image, 255, 255, 255);
// Draw the polygon
imageopenpolygon($image, array(
0, 0,
100, 200,
300, 200
),
3,
$col_poly);
// Output the picture to the browser
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>
以上例程的输出类似于:

参见
imagepolygon()画一个多边形
In case you want to use an open polygon but are stuck with a PHP version prior to 7.2, a solution may be to 'backplot' your array to its original start. Say you have an array of pixels (below seperated by commas)
<?php
$arr = array();
for ($i = 0; $i < count($pixels); $i++) {
$pixel = explode(',', $pixels[$i]);
if (($pixel[0] > 0) && ($pixel[1] > 0)) {
$arr[] = $pixel[0];
$arr[] = $pixel[1];
}
}
imagepolygon($im, $arr, (count($arr) / 2), $otcolor);
?>
you can replace this by something like
<?php
$arr = array();
for ($i = 0; $i < count($pixels); $i++) {
$pixel = explode(',', $pixels[$i]);
$arr[] = $pixel[0];
$arr[] = $pixel[1];
}
// imageopenpolygon($im, $arr, (count($arr) / 2), $otcolor) is not possible, so...
for ($i = (count($pixels)-1); $i >= 0; $i--) {
$pixel = explode(',', $pixels[$i]);
$arr[] = $pixel[0];
$arr[] = $pixel[1];
}
imagepolygon($im, $arr, (count($arr) / 2), $otcolor);
?>
