PHP 7.4.22 Released!

imageopenpolygon

(PHP 7 >= 7.2.0, PHP 8)

imageopenpolygonDessine un polygone ouvert

Description

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

Signature alternative (à partir de PHP 8.0.0)

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

imageopenpolygon() dessine un polygone ouvert sur l'image. Contrairement à imagepolygon(), aucune ligne est dessiné entre le dernier et le premier point.

Liste de paramètres

image

Un objet GdImage, retournée par une des fonctions de création d'images, comme imagecreatetruecolor().

points

Un tableau contenant les sommets du polygone, par exemple :

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

num_points

Nombre total de points (sommets), qui doivent être d'au moins 3.

Si ce paramètre est omis conformément à la deuxième signature, points doit avoir un nombre pair d'éléments, et num_points est assumé d'être count($points)/2.
color

Un identificateur de couleur créé avec imagecolorallocate().

Valeurs de retour

Cette fonction retourne true en cas de succès ou false si une erreur survient.

Historique

Version Description
8.0.0 image attend une instance de GdImage désormais; auparavant, une resource était attendu.

Exemples

Exemple #1 Exemple avec imageopenpolygon()

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

Résultat de l'exemple ci-dessus est similaire à :

Sortie de l'exemple : imageopenpolygon()

Voir aussi

add a note add a note

User Contributed Notes 1 note

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