Ir para conteúdo

POWERED BY:

Arquivado

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

leandroSto

Exibir imagens do campo Blob do Firebird

Recommended Posts

:!: Não to conseguindo puxar essas imagem de jeito nenhum,

e td mundo manda colocar o header mais não acho maneira certa, alguém sabe maneira certa de exibir essa imagens ?

 while($linha = ibase_fetch_assoc($rs)) {

      $binfo = ibase_blob_info($linha['IMG_BLOB']);

      $bopen = ibase_blob_open($linha['IMG_BLOB']);

      echo ibase_blob_get($bopen, $binfo[0]);

      ibase_blob_close($bopen);        
   }

Compartilhar este post


Link para o post
Compartilhar em outros sites

primeiro que você tem que ter um bom motivo para guardar o binário da imagem no BD. Isso pesa o BD. Muitas imagens gerarão um overhead mesmo em consltas SQL.

 

Segundo que se for exibir imagem dando echo, só poderá ter uma imagem. Esse while me parece estranho

 

Não vi o header() no seu código. Você deve colocá-lo antes de dar echo, usando o mime-type adequado. Ou seja, precisa ter no banco tanto o binário da imagem quanto seu mime-type.

 

Supondo uma imagem jpeg:

header( 'Content-type: image/jpeg' );
echo $bin_da_img;

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tem que ter um script que carrega UMA imagem. Por exemplo, um imagem.php, que recebe por query string o ID da imagem que ele exbirá

 

Aí vocÊ coloca na tag img como se fosse uma imagem comum:

 

<img src="imagem.php?id=7" alt="imagem 7" />

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi, então vai ficar assim:..

 

echo '<a href="imagem.php?img='.$id.'">
          <img src="imagem.php?img='.$id.'" /><a>';


Arquivo: imagem.php

-IMG_BLOB: E aonde fica guarda a imagem no banco  

    $Sql =" Select IMG_ID, IMG_LEGENDA, IMG_LICACAO, IMG_TIPO, IMG_BLOB, IMG_TYPE  
				From IMAGEM 
					Where IMG_LICACAO ='".$id."' ";

    $rs  = ibase_query($Sql);
    $linha = ibase_fetch_assoc($rs); 


    header('Content-type: image/jpeg');
    echo $linha["IMG_BLOB"];


 

a pagina fica em branco

Compartilhar este post


Link para o post
Compartilhar em outros sites

visualize o código-fonte e veja se está em branco mesmo

 

você não criou $id

 

tire o header e veja o que aparece. tem que aparecer um monte de caratere bizarro

 

abriu a página imagem.php, passando um parâmetro ara a URL?

 

de novo: o mime-type tem que vir do banco. não é possível garantir que tudo seja JPEG, a não ser que você faça essa restrição no upload

Compartilhar este post


Link para o post
Compartilhar em outros sites

 echo '<a href="imagem.php?img='.$id.'">
          <img src="imagem.php?img='.$id.'" /><a>';


Arquivo: imagem.php

-IMG_BLOB: E aonde fica guarda a imagem no banco  

    require_once('conexao_com_banco.php');

    $id   = $_GET['id'];

    $Sql =" Select IMG_ID, IMG_LEGENDA, IMG_LICACAO, IMG_TIPO, IMG_BLOB, IMG_TYPE  
                                       From IMAGEM 
                                               Where IMG_LICACAO ='".$id."' ";

    $rs  = ibase_query($Sql);
    $linha = ibase_fetch_assoc($rs); 


    header("Content-type: image/jpg");
    echo $linha["IMG_BLOB"];

 

no meu caso mime-type ta no banco so não mostrei pq so to testando com jpg por enquanto,

e sobre o parâmetro na URL to passando certo.

 

Mostra isso na Tela:

 

http://localhost/Sistema/imagem.php?img=1

 

e resto td branco

Compartilhar este post


Link para o post
Compartilhar em outros sites

e pq você envia um

?img=1 e tenta recuperar um:

$id = $_GET['id'];

 

não faz sentido ne?!

 

se você tá mandando img como parâmetro, você só vai capturar com um $_GET['img']

Compartilhar este post


Link para o post
Compartilhar em outros sites

echo '<a href="imagem.php?img='.$id.'">
          <img src="imagem.php?img='.$id.'" /><a>';


Arquivo: imagem.php

-IMG_BLOB: E aonde fica guarda a imagem no banco 

<?php
     require_once('conexao_com_banco.php');


	$img   = $_GET['img'];

	$Sql =" Select IMG_ID, IMG_LEGENDA, IMG_LICACAO, IMG_TIPO, IMG_BLOB, IMG_TYPE  
				From IMAGEM 
					Where IMG_LICACAO ='".$img."' ";

	$rs  = ibase_query($Sql);
	$linha = ibase_fetch_assoc($rs); 


	header ("Content-type: image/jpg");
	echo '<img src="'.$linha["IMG_BLOB"].'">';

?>

Mostra isso na Tela:

http://localhost/Sistema/imagem.php?img=1

 

 

 

e resto td branco

Compartilhar este post


Link para o post
Compartilhar em outros sites
 echo $linha['IMG_BLOB'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

você ainda não entendeu.

Seu script PHP se comportará como uma imagem. Mais precisamente um arquivo de imagem, não um HTML. Logo, não precisa da tag img.

 

a tag img você inlcuirá no HTML, onde quiser que a imagem apareça

Compartilhar este post


Link para o post
Compartilhar em outros sites


Arquivo: consulta.php

$Sql =" Select IMG_ID, IMG_LEGENDA, IMG_LICACAO, IMG_TIPO, IMG_BLOB, IMG_TYPE  
   From IMAGEM 
	Where IMG_LICACAO ='".$id."' ";

$rs  = ibase_query($Sql); 

echo '<a href="imagem.php?img='.$id.'">
          <img src="imagem.php?img='.$id.'" /><a>';



-----------------------------------------------------------------------------------------------------------------
Arquivo: imagem.php

<?php
     require_once('conexao_com_banco.php');


               $img   = $_GET['img'];

               $Sql =" Select IMG_ID, IMG_LEGENDA, IMG_LICACAO, IMG_TIPO, IMG_BLOB, IMG_TYPE  
                                       From IMAGEM 
                                               Where IMG_LICACAO ='".$img."' ";

               $rs  = ibase_query($Sql);
               $linha = ibase_fetch_assoc($rs); 


               header ("Content-type: image/jpg");
               echo '<img src="'.$linha["IMG_BLOB"].'">';

?>

 

entendeu q to fazendo nao e desse jeito ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

não exiba a tag img no imagem.php

o header() serve para informar o tipo do arquivo. você está criando um arquivo de imagem, ou seja, só colocará o binário da imagem, nada de tags HTML

 

a tag img só vai no HTML que exibirá a imagem

Compartilhar este post


Link para o post
Compartilhar em outros sites

ahh entendi

 

  so assim:

  echo $linha["IMG_BLOB"]; 

 

mais tem um pequeno problema não aparece nd fica td em branco

 

se eu tirou o header()

 

imprime isso: 0x000000030000008c

 

estranho

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso é um hexadecimal, ou um binário de 64 bits, nesse caso.

está longe de sre um binário de imagem

se quiser comparar, use imagecreatefromjpeg() por exemplo e dê echo no retorno da função. Aquilo é o que deveria estar no banco de dados

 

você deve estar salvado os binários de forma errada ou o firebird não está sabendo tratar a informação

Compartilhar este post


Link para o post
Compartilhar em outros sites

pronto consegui retorna código binário da imagem

 

fiz assim ow

 

antes estava assim:
     $linha = ibase_fetch_assoc($rs); 

     $linha = ibase_fetch_assoc($rs, IBASE_TEXT); 

 

ele retornou isso

ÿØÿàJFIF``

 

Obs: você sabe q e um código binário não vou colocar td so um exemplo kkkk

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.