PHP Conference Japan 2024

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 条注释

marco at oostende dot nl
5 年前
如果您想使用开放多边形,但使用的 PHP 版本早于 7.2,则一种解决方案可能是“反向绘制”您的数组到其原始起点。假设您有一个像素数组(下面用逗号分隔)

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