imageopenpolygon

(PHP 7 >= 7.2.0, PHP 8)

imageopenpolygonDibuja un polígono abierto

Descripción

Firma disponible a partir de PHP 8.0.0 (no soportada con argumentos nombrados)

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

Firma alternativa (obsoleta a partir de PHP 8.1.0)

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

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.

Parámetros

image

Un recurso image, es devuelto por una de las funciones de creación de imágenes, como imagecreatetruecolor().

points

Un array que contiene los vértices del polígono, por ejemplo:

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

num_points

Nú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.
color

Un identificador de color creato con imagecolorallocate().

Valores devueltos

Devuelve true en caso de éxito o false en caso de error.

Historial de cambios

Versión Descripción
8.1.0 El parámetro num_points ha sido declarado obsoleto.
8.0.0 image expects a GdImage instance now; previously, a valid gd resource was expected.

Ejemplos

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

El resultado del ejemplo sería algo similar a:

Salida del ejemplo: imageopenpolygon()

Ver también

add a note

User Contributed Notes 1 note

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