PHP 8.6.0 Beta 1 is available for testing

imageopenpolygon

(PHP 7 >= 7.2.0, PHP 8)

imageopenpolygonРисует открытый полигон

Описание

Сигнатура с PHP 8.0.0 (не поддерживается с именованными аргументами)

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

Альтернативная сигнатура (устарела с PHP 8.0.0)

function 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
 ),
 $col_poly
);
// Выводим изображение в браузер
header('Content-type: image/png');
imagepng($image);
?>

Вывод приведённого примера будет похож на:

Смотрите также

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей 1 note

up
0
marco at oostende dot nl
7 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);
?>
+Добавить

AltStyle によって変換されたページ (->オリジナル) /