imageopenpolygon

(PHP 7 >= 7.2.0)

imageopenpolygonDraws an open polygon

Descrizione

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

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

Elenco dei parametri

image

Una risorsa immagine, restituita da una delle funzioni di creazione immagine, come 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().

Valori restituiti

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.

Esempi

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

Il precedente esempio visualizzerĂ  qualcosa simile a:

Output of example : imageopenpolygon()

Vedere anche:

add a note add a note

User Contributed Notes 1 note

up
-1
marco at oostende dot nl
10 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