imageopenpolygon
(PHP 7 >= 7.2.0, PHP 8)
imageopenpolygon — Draws an open polygon
说明
Signature as of PHP 8.0.0 (not supported with named arguments)
Alternative signature (deprecated as of PHP 8.1.0)
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())返回的 GdImage 对象。
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.
If this parameter is omitted as per the second signature,points
must have an even number of elements, andnum_points
is assumed to becount($points)/2
. color
-
颜色标识符使用 imagecolorallocate() 创建。
更新日志
版本 | 说明 |
---|---|
8.1.0 |
The parameter num_points has been deprecated.
|
8.0.0 |
image 现在需要 GdImage 实例;之前需要有效的 gd resource。
|
示例
示例 #1 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
),
$col_poly);
// Output the picture to the browser
header('Content-type: image/png');
imagepng($image);
?>
以上示例的输出类似于:

参见
- imagepolygon() - 绘制多边形
+添加备注
用户贡献的备注 1 note
marco at oostende dot nl ¶
6 years ago
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);
?>
备份地址:http://www.lvesu.com/blog/php/function.imageopenpolygon.php