(PHP 7 >= 7.2.0, PHP 8)
imageopenpolygon — Dibuja un polígono abierto
Firma disponible a partir de PHP 8.0.0 (no soportada con argumentos nombrados)
Firma alternativa (obsoleta a partir de PHP 8.1.0)
imageopenpolygon() dibuja un polígono abierto en
la image. A diferencia de imagepolygon() ,
no se dibuja ninguna línea entre el último y el primer punto.
imagepointsUn array que contiene los vértices del polígono, por ejemplo:
num_pointsNúmero total de puntos (vértices), que deben ser al menos 3.
Si este parámetro se omite conforme a la segunda firma,points debe tener un número par de elementos, y
num_points se asume que es count($points)/2.
colorUn identificador de color creado con imagecolorallocate() .
| Versión | Descripción |
|---|---|
| 8.1.0 |
El parámetro num_points ha sido declarado obsoleto.
|
| 8.0.0 |
image ahora espera una instancia de GdImage
; anteriormente, se esperaba un recurso gd de tipo resource válido.
|
Ejemplo #1 Ejemplo con imageopenpolygon()
<?php
// Crear una imagen vacía
$image = imagecreatetruecolor(400, 300);
// Asignar un color para el polígono
$col_poly = imagecolorallocate($image, 255, 255, 255);
// Dibujar el polígono
imageopenpolygon($image, array(
0, 0,
100, 200,
300, 200
),
$col_poly);
// Mostrar la imagen en el navegador
header('Content-type: image/png');
imagepng($image);
?>Resultado del ejemplo anterior es similar a:
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);
?>