imageopenpolygon

(PHP 7 >= 7.2.0)

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

Описание

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

imageopenpolygon() рисует открытый полигон на заданном изображении (image). В отличие от imagepolygon(), линия между последней и первой точкой не рисуется.

Список параметров

image

Ресурс изображения, возвращаемый одной из функций создания изображений, например, такой как imagecreatetruecolor().

points

Массив, содержащий вершины многоугольника, например:

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

num_points

Общее число точек (вершин), должно быть не меньше 3.

color

Идентификатор цвета, созданный функцией imagecolorallocate().

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример #1 imageopenpolygon() example

<?php
// Создать пустое изображение
$image imagecreatetruecolor(400300);

// Выделение цвета для полигона
$col_poly imagecolorallocate($image255255255);

// Нарисовать полигон
imageopenpolygon($image, array(
        
0,   0,
        
100200,
        
300200
    
),
    
3,
    
$col_poly);

// Вывод изображения в браузер
header('Content-type: image/png');

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

Результатом выполнения данного примера будет что-то подобное:

Вывод примера : imageopenpolygon()

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

add a note add a note

User Contributed Notes 1 note

up
-1
marco at oostende dot nl
11 months 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);
?>
To Top