Adicionando Texto á imagem com PHP

Com PHP e a biblioteca GD você poderá manipular qualquer tipo de imagem. Isso inclui criar redimensionar imagens, Criar imagens a partir de textos

Atenção: Verifique se a biblioteca GD esta instalada no phpinfo(); Veja a imagem abaixo.

1° Exemplo: Escrever em uma imagem já existente

Esta é uma tarefa simples. Veja o exemplo comentado e expolicado:

<?php
// Carregar imagem já existente no servidor
$imagem = imagecreatefromjpeg( "foto.jpg" );
/* @Parametros
 * "foto.jpg" - Caminho relativo ou absoluto da imagem a ser carregada.
 */

// Cor de saída
$cor = imagecolorallocate( $imagem, 255, 255, 255 );
/* @Parametros
 * $imagem - Imagem previamente criada Usei imagecreatefromjpeg
 * 255 - Cor vermelha ( RGB )
 * 255 - Cor verde ( RGB )
 * 255 - Cor azul ( RGB )
 * -- No caso acima é branco
 */

// Texto que será escrito na imagem
$nome = urldecode( $_GET['nome'] );
/* @Parametros
 * $_GET['nome'] - Texto que será escrito
 */

// Escrever nome
imagestring( $imagem, 5, 15, 515, $nome, $cor );
/* @Parametros
 * $imagem - Imagem previamente criada Usei imagecreatefromjpeg
 * 5 - tamanho da fonte. Valores de 1 a 5
 * 15 - Posição X do texto na imagem
 * 515 - Posição Y do texto na imagem
 * $nome - Texto que será escrito
 * $cor - Cor criada pelo imagecolorallocate
 */

// Header informando que é uma imagem JPEG
header( 'Content-type: image/jpeg' );

// eEnvia a imagem para o borwser ou arquivo
imagejpeg( $imagem, NULL, 80 );
/* @Parametros
 * $imagem - Imagem previamente criada Usei imagecreatefromjpeg
 * NULL - O caminho para salvar o arquivo. 
          Se não definido NULL a imagem será mostrado no browser. 
 * 80 - Qualidade da compresão da imagem.
 */

Veja o exemplo funcionando em php.eduardokraus.com/code/10026/index1.php. Estou usando minha foto do facebook.

2° Exemplo: Criando imagem para leitor de códigos de barras

Esta é uma dúvida comum. Mas o PHP resolve rápido rápido. Veja o exemplo comentado abaixo:

<?php
$tamanhofonte = 100;
// Fonte de código de barras que eu tenho em um sistema
$fonte = 'c39hrp48dhtt.ttf';

// Texto que será impresso na imagem
// Para que funcione com leitores é necessário
// que seja iniciado e finalizado a String com o caracter '*'
$texto = "*" . $_GET['nome'] . "*";

// Retorna o tamanho da imagem criada pela fonte acima carregada.
$tamanho = imagettfbbox($tamanhofonte, 0, $fonte, $texto);
$largura = $tamanho[2] + $tamanho[0] + 8;
$altura = abs($tamanho[1]) + abs($tamanho[7]);

// cria a imagem exatamente do tamanho informado pelo imagettfbbox
$imagem = imagecreate($largura, $altura);
/* @Parametros
 * $largura - Largura que deve ser criada a imagem
 * $altura - Altura que deve ser criada a imagem
 */

// Primeira chamada do imagecolorallocate cria a cor de fundo da imagem
imagecolorallocate($imagem, 255, 255, 255);

// As demais chamadas criam cores para serem usadas na imagem
$preto = imagecolorallocate($imagem, 0, 0, 0);

// Adiciona o texto a imagem
imagefttext($imagem, $tamanhofonte, 0, 0, abs($tamanho[5]), $preto, $fonte, $texto);
/* @Parametros
 * $imagem - Imagem previamente criada Usei imagecreate.
             poderia ter usado o imagecreatefromjpeg
 * $tamanhofonte - Tamanho da fonte em pixel
 * 0 - Posição X do texto na imagem
 * 0 - Posição Y do texto na imagem
 * abs($tamanho[5]) - Corrige o Y
 * $preto - Cor do texto
 * $fonte - Caminho relativo ou absoluto da fonte a ser carregada.
 * $texto - Texto que deverá ser escrito
 */

// Header informando que é uma imagem JPEG
header( 'Content-type: image/jpeg' );

// eEnvia a imagem para o borwser ou arquivo
imagejpeg( $imagem, NULL, 80 );
/* @Parametros
 * $imagem - Imagem previamente criada Usei imagecreatefromjpeg
 * NULL - O caminho para salvar o arquivo. 
          Se não definido ou NULL, o stream da imagem será mostrado diretamente. 
 * 80 - Qualidade da compresão da imagem.
 */

Veja o exemplo funcionando em php.eduardokraus.com/code/10026/index2.php.

Quer o código fonte completo deste exemplo? Clique aqui.

Ficou com dúvidas, comente abaixo.

Fique por dentro de nossas novidades, ideias e atualizações