imageopenpolygon

(PHP 7 >= 7.2.0, PHP 8)

imageopenpolygon绘制一个开放的多边形

说明

PHP 8.0.0 中的签名(不支持命名参数)

imageopenpolygon(GdImage $image, array $points, int $color): bool

备用签名(自 PHP 8.1.0 起已弃用)

imageopenpolygon(
    GdImage $image,
    array $points,
    int $num_points,
    int $color
): bool

imageopenpolygon() 在给定的 image 上绘制一个开放的多边形。与 imagepolygon() 不同,在最后一个点和第一个点之间没有绘制线条。

参数

image

一个 GdImage 对象,由图像创建函数之一返回,例如 imagecreatetruecolor()

points

包含多边形顶点的数组,例如

points[0] = x0
points[1] = y0
points[2] = x1
points[3] = y1

num_points

点的总数(顶点),必须至少为 3 个。

如果此参数按照第二个签名省略,则 points 必须具有偶数个元素,并且 num_points 假设为 count($points)/2
color

使用 imagecolorallocate() 创建的颜色标识符。

返回值

成功时返回 true,失败时返回 false

变更日志

版本 说明
8.1.0 参数 num_points 已被弃用。
8.0.0 image 现在需要一个 GdImage 实例;以前,需要一个有效的 gd resource

范例

范例 #1 imageopenpolygon() 范例

<?php
// 创建一个空白图像
$image = imagecreatetruecolor(400, 300);

// 为多边形分配一种颜色
$col_poly = imagecolorallocate($image, 255, 255, 255);

// 绘制多边形
imageopenpolygon($image, array(
0, 0,
100, 200,
300, 200
),
3,
$col_poly);

// 将图片输出到浏览器
header('Content-type: image/png');

imagepng($image);
imagedestroy($image);
?>

上面的例子将输出类似于

Output of example : imageopenpolygon()

参见

添加备注

用户贡献的备注 1 备注

0
marco at oostende dot nl
5 年前
如果你想使用一个开放的多边形,但被困在 7.2 之前的 PHP 版本中,一个解决方案可能是将你的数组“回溯”到其原始开始。假设你有一个像素数组(下面用逗号分隔)

<?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);
?>

你可以用类似的东西替换它

<?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) 不可能,所以...
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);
?>
To Top