Ir para conteúdo

POWERED BY:

Arquivado

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

wBB

[Resolvido] Gerar e exibir imagem dinamicamente

Recommended Posts

Pessoal, estou gerando uma imagem dinamicamente e gostaria de exibir a imagem no browser sem ter que salvar em disco. Tem como fazer isso?

 

Estou gerando a imagem da seguinte maneira:

$imagem = ImageCreate(100, 20);
$branco = ImageColorAllocate($imagem, 255, 255, 255);
$azul = ImageColorAllocate($imagem, 20, 93, 233);
$vermelho = ImageColorAllocate($imagem, 255, 0, 0);
ImageFilledRectangle($imagem, 5, 10, 45, 14, $azul);
ImageRectangle($imagem, 5, 10, 60, 14, $vermelho);

echo "<img src=\"".$imagem."\" width=\"50\" height=\"50\" border=\"0\">";

ImageDestroy($imagem);
Fazendo da forma como indiquei acima, o resultado no HTML é "<img src="Resource id #18" width="50" height="50" border="0">". Já se for executado o echo da imagem diretamente, echo $imagem, o resultado no browser é o texto "Resource id #18".

Se usar um "header("Content-type: image/gif")" no início do código dá para ver que a imagem é gerada corretamente, mas daí não consigo usa-la onde eu preciso (dentro de uma tabela por exemplo).

 

Alguém pode me dar uma ajudinha?

Compartilhar este post


Link para o post
Compartilhar em outros sites

arquivo 1 (imagem.php)

 

$imagem = ImageCreate(100, 20);
$branco = ImageColorAllocate($imagem, 255, 255, 255);
$azul = ImageColorAllocate($imagem, 20, 93, 233);
$vermelho = ImageColorAllocate($imagem, 255, 0, 0);
ImageFilledRectangle($imagem, 5, 10, 45, 14, $azul);
ImageRectangle($imagem, 5, 10, 60, 14, $vermelho);

header("Content-Type: image/gif");
imagegif($imagem);

arquivo 2 (exibe.php)

 

<img src="imagem.php" />

 

Ou seja: um arquivo gera a imagem, o outro CHAMA o arquivo como se fosse uma imagem ;)

 

@braços e fique com Deus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito!

Funcionou legal...

Só mais uma pergunta: por que funciona quando coloco o código em arquivos separados e não funciona se eu criar uma função no mesmo script PHP?

 

obrigado pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

por que para gerar uma imagem e exibi-la no browser, o servidor precisa alterar o header (cabeçalho) de resposta. Se voce escreve algo antes do cabecalho de resposta, muda o formato, logo não é mais uma imagem. Se coloca algo depois de enviar, a imagem fica quebrada.

 

@braços e fique com Deus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal, hufersil,

Preciso de mais uma ajudinha. Criei uma rotina um pouco mais genérica para atender minhas necessidades, mas estou apanhando de um outro problema em função disso. O código ficou da seguinte maneira:

include_once ("consts.php");
   $img		   = ImageCreate(cPROGRESS_WIDTH, cPROGRESS_HEIGHT);
   
   $BackColor	 = ImageColorAllocate($img, $ProgressBackColor[0]  , $ProgressBackColor[1]  , $ProgressBackColor[2]);
   $BorderColor   = ImageColorAllocate($img, $ProgressBorderColor[0], $ProgressBorderColor[1], $ProgressBorderColor[2]);
   $ProgressColor = ImageColorAllocate($img, $ProgressBarColor[0]   , $ProgressBarColor[1]   , $ProgressBarColor[2]);
   
   ImageFilledRectangle($img, 0, 0, $ProgressRectFill, cPROGRESS_HEIGHT, $ProgressColor);
   ImageRectangle($img, 0, 0, cPROGRESS_WIDTH-1, cPROGRESS_HEIGHT-1, $BorderColor);
   
   header("Content-Type: image/gif");
   imagegif($img);
Conforme sua orientação este código está dentro de um arquivo separado e estou chamando-o por "echo "<img src='imagem.php'/>";". Sem problemas até aí.

 

O problema: Coloquei a variável "$ProgressRectFill" na função "ImageFilledRectangle", para poder criar a imagem de um retângulo mais preenchido ou menos preenchido. Só que não consigo alterar o valor desta variável "$ProgressRectFill". Já declarei a variável em vários lugares, mas não consegui resolver o problema. Todas as variáveis do código estão declaradas na unidade "consts.php".

Alguém tem idéia de como resolver?

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

No imagem PHP

$ProgressRectFill = $_GET['ProgressRectFill'];

// resto do codigo

no que chama o arquivo:

 

<img src="imagen.php?ProgressRectFill=130" />

Tente desta forma.

@braços e fique com Deus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala hufersil.

Novamente funcionou OK!

Poxa, já usei tanto isso em outras coisas... falta de pensar um pouco mesmo.

 

Obrigado pela ajuda mais uma vez.

t+

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.