GD: Biblioteca de funções de imagens

A partir de PHP 4.3 há uma versão incluída da biblioteca GD, mas para poder escrever em formato GIF é necessário ter uma versão igual oi superior a PHP 4.3.9.

Pode-se trabalhar com os metadados das imagens criadas por câmaras digitais, mas para isso é necessário utilizar a extensão exif. Pode-se encontrar mais informação na página oficial de PHP:www.php.net/manual/es/ref.exif.php

Instalação

Para saber se se pode utilizar a biblioteca, há que comprovar se está instalada. Para isto, há que executar o seguinte comando:

//Se aparece no array GD, significa que está disponível
$extensões = get_loaded_extensions();
print_r($extensoes); //Para mostrá-lo na tela

O resultado pode ser algo como o seguinte (depende do que o servidor tenha instalado):

Array ( [0] => … [27] => gd [28] => … )

No caso de que não apareça, há que instalá-lo. Para isso, pode-se dar uma olhada no artigo para poder instalá-lo em Linux. Há que observar no“Passo 4: Instalar módulo PHP5-mysql e outras extensões PHP necessárias”, onde se fala da instalação de diversos pacotes, entre eles GD. E para mais informação sobre a instalação, consultar a página oficial de PHP.

Utilizações

Entre os usos que podem ser dados a esta biblioteca estão:

  • A criação de figuras geométricas: linhas, elipses, polígonos, pontos, círculos… e tudo o que isso implica
  • A criação de textos
  • A criação de gráficos
  • Acrescentar uma marca de água às imagens
  • Criar um captcha caseiro com texto e som

É importante ter em conta que a coordenada (0,0) está no canto superior esquerdo.

Também há que ter em conta que se as imagens são demasiadamente pesadas, a biblioteca GD na é a mais indicada para trabalhar com elas. Haveria que buscar outras alternativas, como por exemplo, Wide Image ou qualquer outra biblioteca de imagens que possa manipular mais “peso”, suportada por PHP.

Funções

A continuação são expostas as funções mais básicas da biblioteca. Para completar a informação se pode visitar a página oficial, onde aparecem todas as funções: php.net/manual/es/ref.image.php

Para criar um fundo:

  • $imagem = imagecreate($largura, $altura);
  • Recomendada: $imagem = imagecreatetruecolor($largura, $altura);
    Nota: Por padrão, o fundo criado é de cor negra. Para mudar a cor de fundo haveria que utilizar a função:imagefill($imagem,$x,$y,$cor);

    Sendo $x, $y as coordenadas a partir das quais se começa a preencher. Por tanto, se se quer preencher completamente deveria ser 0, 0. Para criar uma cor se utiliza:

    $grey = imagecolorallocate($imagem, 200, 200, 200);

    E se se quer dar transparência, então se utiliza:

    $grey = imagecolorallocatealpha($imagem, 200, 200, 200, 50);

Para criar uma imagem a partir de outra se pode utilizar um endereço URL ou uma rota:

  • Para imagens png:
    $imagem = imagecreatefrompng(“http://…/images/imagem.png”);
  • Para imagens gif:
    $imagem = imagecreatefromgif(“images /imagen.gif”);
  • Para imagens jpg/jpeg:
    $imagem = imagecreatefromjpeg(“images /imagen.jpg”);

Para desenhar linhas:

  • imageline($imagem, $xInicio, $yInicio, $xFim, $yFim, $cor);

Para desenhar pontos:

  • imagesetpixel($imagem, $x, $y, $cor);

Para desenhar arcos:

  • imagefilledarc($imagem, $centroX, $centroY, $largura, $altura, $anguloInicio, $anguloFim, $cor, $estilo);
    Sendo os possíveis estilos para $estilo os seguintes:

    • IMG_ARC_PIE: produz uma borda arredondada
    • IMG_ARC_CHORD: conecta os ângulos de início e de finalização com uma linha reta
    • IMG_ARC_NOFILL: indica que o arco ou corda deveriam estar perfilados, não preenchidos
    • IMG_ARC_EDGED: usado junto com IMG_ARC_NOFILL, indica que os ângulos de início e finalização deveriam estar conectados com o centro
      Nota: para utilizar conjuntamente os estilos há que separá-los por |. Exemplo: imagefilledarc($imagem, $centroX, $centroY, $largura, $altura, $anguloInicio, $anguloFim, $cor, IMG_ARC_NOFILL|IMG_ARC_EDGED);

Para desenhar retângulos:

  • Preenchimento: imagefilledrectangle($imagem, $xInicio, $yInicio, $xFim, $yFim, $cor);
  • Borda: imagerectangle($imagem, $xInicio, $yInicio, $xFim, $yFim, $cor);
    Nota: se se forem utilizar as duas funções, se deveria desenhar primeiro o preenchimento e depois a borda , para que a borda se superponha ao preenchimento.

Para desenhar polígonos:

  • Preenchimento: imagefilledpolygon($imagem, $pontosArray, $quantidadePontos, $cor);
  • Borda: imagepolygon($imagem, $pontosArray, $quantidadePontos, $cor);
  • Para desenhar elipses:
  • Preenchimento: imagefilledellipse($imagem, $centroX, $centroY, $largura, $altura, $cor);
  • Borda: imageellipse($imagem, $centroX, $centroY, $largura, $altura, $cor);

Para desenhar texto:

  • Horizontal:
    • imagestring($imagem, $fonte, $x, $y, $texto, $cor);
      Sendo $fonte um número de 1 a 6
    • imagefttext($imagem, $tamanho, $angulo, $x, $y, $cor, $fonte, $texto);
      Sendo $fonte uma rota de uma fonte .ttf
  • Vertical:
    • imagestringup($imagem, $fonte, $x, $y, $texto, $cor);
      Sendo $fonte um número de 1 a 6

Fonte: http://www.criarweb.com/artigos/gd-biblioteca-funcoes-imagens.html

Deixe um comentário