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() 创建。
返回值
成功时返回 true
, 或者在失败时返回 false
。
更新日志
版本 | 说明 |
---|---|
8.1.0 |
The parameter num_points has been deprecated.
|
8.0.0 |
image expects a GdImage
instance now; previously, a resource was expected.
|
范例
示例 #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
),
3,
$col_poly);
// Output the picture to the browser
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>
以上例程的输出类似于:
参见
- imagepolygon() - 画一个多边形
add a note
User Contributed Notes 1 note
marco at oostende dot nl ¶
3 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