Dutch PHP Conference 2021 - Call for Papers

imageopenpolygon

(PHP 7 >= 7.2.0, PHP 8)

imageopenpolygonDraws an open polygon

Beschreibung

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

Alternative signature (as of PHP 8.0.0)

imageopenpolygon ( resource $image , array $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.

Parameter-Liste

image

Eine von den verschiedenen Erzeugungsfunktionen wie imagecreatetruecolor() gelieferte Grafikressource.

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), which must be at least 3.

If this parameter is omitted as per the second signature, points must have an even number of elements, and num_points is assumed to be count($points)/2.
color

Eine Farbkennung, die mit imagecolorallocate() erzeugt wurde.

Rückgabewerte

Gibt bei Erfolg true zurück. Im Fehlerfall wird false zurückgegeben.

Beispiele

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

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

Output of example : imageopenpolygon()

Siehe auch

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