Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Giihh

Gerar imagens (GD, Cairo, Exif, Gmagik, Imagemagik, etc)

Recommended Posts

Olá,

 

vi no manual do php que existem diversas formas de gerar imagens

 

http://php.net/manual/pt_BR/refs.utilspec.image.php

 

Preciso fazer o seguinte:

  • Determinar um tamanho padrão da imagem,
  • trabalhar com duas fontes
  • definir o tamanho de cada fonte
  • na variavel com texto dinâmico, quebrar o texto em partes e cada parte ter uma fonte
  • background cores aleatórias da paleta padrão de cores
  • quando gerar a imagem salvar na pasta determinada

E claro tem que ter uma quebra de linha automática dentro do limite da imagem

 

Alguma ideia qual a melhor biblioteca para isso, e uma noção de quais funções poderei usar?

 

Agradeço ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mano eu uso a GD, olha esse explo ae, é auto explicativo

<?php
// bibliote GD
// Variaveis  a serem impressas
$nome = utf8_decode("Marcos Alaniaao");
$ra = utf8_decode("00000000");
$curso = utf8_decode("Pedagogia");
$turma = utf8_decode("A");
$nascimento = "04/10/1984";
$validade = "10/10/2016";
// fonte e tamanho
$tamanhofonte = 14;
$fonte = 'arialbd.ttf';
// 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 = imagecreatefromjpeg("carterinha.jpg");
/* @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, 230, 250, $preto, $fonte, $nome);//nome
imagefttext($imagem, $tamanhofonte, 0, 230, 320, $preto, $fonte, $ra);//matricula
imagefttext($imagem, $tamanhofonte, 0, 400, 320, $preto, $fonte, $curso);//curso
imagefttext($imagem, $tamanhofonte, 0, 570, 320, $preto, $fonte, $turma);//Turma
imagefttext($imagem, $tamanhofonte, 0, 230, 390, $preto, $fonte, $nascimento);//nasciemnto
imagefttext($imagem, $tamanhofonte, 0, 470, 390, $preto, $fonte, $validade);//cidade
//imagefttext($image, $size, $angle, $x, $y, $color, $fontfile, $text, $extrainfo);
/* @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.
 */
?>

index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<img src="card.php"  />
</body>
</html>

testa ae

Compartilhar este post


Link para o post
Compartilhar em outros sites

rsrs obrigada icarof

 

fiz assim: coloquei em um local no arquivo teste.php

 

o trecho

<img src="card.php" />

E criei o arquivo card.php e coloquei a font OpenSans-Bold.ttf no mesmo diretorio, alterando a fonte no codigo tambem

 

Pelo que entendi pela configuração deveria exibir no local a imagem carterinha.jpg criada e no codigo fonte então ficaria assim:

<img src="carterinha.jpg" />

Mas só ta aparecendo o quadradinho de imagem inexistente e no codigo fonte <img src="card.php" />

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso onde tem carteirinha, você coloca a imagem que você vai usar, o codigo foi feito pra usar as dimensões reais da imagem.

 

tipo o arquivo card.php vai ser lido pela index como uma imagem, e não uma pagina, no caso onde tem

$imagem = imagecreatefromjpeg("carterinha.jpg");

coloque a imagem que você pretende usar, onde você pretende mostrar

coloque

<img src="card.php"  />

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta usando na hospedagen ou localhost?

nota todos os arquivos tem que esta no mesmo diretorio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

esta igual o seu arquivo index.php,

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<img src="card.php"  />
</body>
</html>

card.php

<?php
// bibliote GD
// Variaveis  a serem impressas
$nome = utf8_decode("Marcos Alaniaao");
$ra = utf8_decode("00000000");
$curso = utf8_decode("Pedagogia");
$turma = utf8_decode("A");
$nascimento = "04/10/1984";
$validade = "10/10/2016";
// fonte e tamanho
$tamanhofonte = 14;
$fonte = 'OpenSans-Bold.ttf';
// 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 = imagecreatefromjpeg("carterinha.jpg");
/* @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, 230, 250, $preto, $fonte, $nome);//nome
imagefttext($imagem, $tamanhofonte, 0, 230, 320, $preto, $fonte, $ra);//matricula
imagefttext($imagem, $tamanhofonte, 0, 400, 320, $preto, $fonte, $curso);//curso
imagefttext($imagem, $tamanhofonte, 0, 570, 320, $preto, $fonte, $turma);//Turma
imagefttext($imagem, $tamanhofonte, 0, 230, 390, $preto, $fonte, $nascimento);//nasciemnto
imagefttext($imagem, $tamanhofonte, 0, 470, 390, $preto, $fonte, $validade);//cidade
//imagefttext($image, $size, $angle, $x, $y, $color, $fontfile, $text, $extrainfo);
/* @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.
 */
?>

ai tem a imagem carterinha.jpg e a fonte OpenSans-Bold.ttf tudo no mesmo diretorio (na raiz)

Compartilhar este post


Link para o post
Compartilhar em outros sites

No localhsot esta, mas na hospedagem não.

 

faz assim,se tu tiver usando o windows, vai nas opções de pasta e poe pra mostrar as extenções dos arquivos conhecidos.

 

ai vc copia o nome da imagem que vai usar e poe la, onde ta carteirinha é o nome da sua imagem

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php
header("Content-type: image/gif"); //Informa ao browser que o arquivo é uma imagem no formato GIF

$nome = utf8_decode("Marcos Alaniaao");
$ra = utf8_decode("00000000");
$curso = utf8_decode("Pedagogia");
$turma = utf8_decode("A");
$nascimento = "04/10/1984";
$validade = "10/10/2016";
// fonte e tamanho
$tamanhofonte = 14;
$fonte = 'OpenSans-Bold.ttf';

$imagem = ImageCreate(700,700); //Cria uma imagem com as dimensões 700x700

$vermelho = ImageColorAllocate($imagem, 255, 0, 0); //Cria o segundo plano da imagem e o configura para vermelho
$branco = ImageColorAllocate($imagem, 255, 255, 255); //Cria a cor de primeiro plano da imagem e configura-a para branco

imagefttext($imagem, $tamanhofonte, 0, 230, 250, $branco, $fonte, $nome);//nome
imagefttext($imagem, $tamanhofonte, 0, 230, 320, $branco, $fonte, $ra);//matricula
imagefttext($imagem, $tamanhofonte, 0, 400, 320, $branco, $fonte, $curso);//curso
imagefttext($imagem, $tamanhofonte, 0, 570, 320, $branco, $fonte, $turma);//Turma
imagefttext($imagem, $tamanhofonte, 0, 230, 390, $branco, $fonte, $nascimento);//nasciemnto
imagefttext($imagem, $tamanhofonte, 0, 470, 390, $branco, $fonte, $validade);//cidade

//Imprime na imagem os textos que estão na variável $branco

ImageGif($imagem); //Converte a imagem para um GIF e a envia para o browser

ImageDestroy($imagem); //Destrói a memória alocada para a construção da imagem GIF.
?>

assim criou uma imagem gif, sem especificar uma imagem já existente, ficou bagunçado pois eu coloquei 700x700 pra criar a imagem desse tamanho

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.