SunshinePHP 2019

imageopenpolygon

(PHP 7 >= 7.2.0)

imageopenpolygonDraws an open polygon

Descrição

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

imageopenpolygon() draws an open polygon on the given image. Contrary to imagepolygon(), no line is drawn between the last and the first point.

Parâmetros

image

Um resource de imagem, retornado por funções de criação de imagens, como imagecreatetruecolor().

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).

color

A color identifier created with imagecolorallocate().

Valor Retornado

Retorna TRUE em caso de sucesso ou FALSE em caso de falha.

Exemplos

Exemplo #1 imageopenpolygon() example

<?php
// Create a blank image
$image imagecreatetruecolor(400300);

// Allocate a color for the polygon
$col_poly imagecolorallocate($image255255255);

// Draw the polygon
imageopenpolygon($image, array(
        
0,   0,
        
100200,
        
300200
    
),
    
3,
    
$col_poly);

// Output the picture to the browser
header('Content-type: image/png');

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

O exemplo acima irá imprimir algo similar à:

Output of example : imageopenpolygon()

Veja Também

add a note add a note

User Contributed Notes 1 note

up
0
marco at oostende dot nl
2 days 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