PHP Velho Oeste 2024

imageopenpolygon

(PHP 7 >= 7.2.0, PHP 8)

imageopenpolygonDesenha um polígono aberto

Descrição

Assinatura a partir do PHP 8.0.0 (não suportada com argumentos nomeados)

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

Assinatura alternativa (defasada a partir do PHP 8.1.0)

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

imageopenpolygon() desenha um polígono aberto na imagem informada em image. A contrário de imagepolygon(), nenhuma linha é desenhada entre o último ponto e o primeiro ponto.

Parâmetros

image

Um objeto GdImage, retornado por uma das funções de criação de imagem, como imagecreatetruecolor().

points

Um array contendo os vértices do polígono, por exemplo:

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

num_points

Número total de pontos (vértices), que devem ser pelo menos 3.

Se este parâmetro for omitido conforme a segunda assinatura, points precisa ter um número par de elementos, e será assumido que num_points será igual a count($points)/2.
color

Um identificador de cor criado com imagecolorallocate().

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha.

Registro de Alterações

Versão Descrição
8.1.0 O parâmetro num_points foi descontinuado.
8.0.0 O parâmetro image agora espera uma instância de GdImage; anteriormente, um resource gd válido era esperado.

Exemplos

Exemplo #1 Exemplo de imageopenpolygon()

<?php
// Cria uma imagem vazia
$image = imagecreatetruecolor(400, 300);

// Aloca uma cor para o polígono
$col_poly = imagecolorallocate($image, 255, 255, 255);

// Desenha o polígono
imageopenpolygon($image, array(
0, 0,
100, 200,
300, 200
),
3,
$col_poly);

// Mostra a imagem no navegador
header('Content-type: image/png');

imagepng($image);
imagedestroy($image);
?>

O exemplo acima produzirá algo semelhante a:

Saída do exemplo: imageopenpolygon()

Veja Também

add a note

User Contributed Notes 1 note

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