exibir imagem salva em campo blob do firebird c/ PHP

1,573 views
Skip to first unread message

Jonatan Froes

unread,
Jun 24, 2010, 7:43:25 AM6/24/10
to list...@googlegroups.com
Bom dia, galera

O pessoal de um colégio quer exibir na web os dados (cadastrados no firebird por um sistema em Delphi) dos alunos. Até aí tudo bem, mas estou com dificuldades para exibir a foto (armazenada em um campo blob). Alguém já fez isto e pode me ajudar?

Olhei alguns exemplos na web, mas nenhum funcionou ainda.

Vejam o cód:

$query = "select * from aluno where CODIGO=503";
$res = ibase_query($query);
while( $reg = ibase_fetch_assoc($res) )
{
    $dados[] = $reg;
}
header('Content-type: image/jpg');
$data = $dados[0]['FOTO'];
$arq_destino = 'blob.jpg';
$img_blob = imagecreatefromstring($data);

imagejpeg($img_blob, $arq_destino)or die('Não foi possível criar o arquivo ' . $arq_destino . '.');
echo '<img src="' . $arq_destino . '"  />';



Abs
Jônatan Fróes - Desenvolvedor web
http://twiiter.com/jonatanfroes | http://tinyurl.com/jonatanfroes
http://www.webtrindade.com.br | http://www.webcanedo.com.br

Gabriel Bruno Oliveira Mendonça

unread,
Jun 24, 2010, 8:13:54 AM6/24/10
to list...@googlegroups.com
Cara faz tempo que não faço esse tipo de coisa mas acho que pode jogar os dados da imagem direto dentro da img

tipo:

fez a query armazenou em $imagem

para mostrar

<img src="<?php echo $imagem; ?>" />

faz um teste ai e posta se funcionar!


De: Jonatan Froes <jonata...@gmail.com>
Para: list...@googlegroups.com
Enviadas: Quinta-feira, 24 de Junho de 2010 8:43:25
Assunto: [ PHP - Google ] exibir imagem salva em campo blob do firebird c/ PHP
--
============================================================
LEIAM SEMPRE AS REGRAS DA LISTA:
http://groups.google.com.br/group/listaphp/web/regras-da-lista-php
--
LISTA PHP > http://groups.google.com.br/group/listaphp
--
REVISTA PHP > http://www.revistaphp.com.br
--
AJAX-BRASIL > http://groups.google.com/group/ajax-brasil
--
PYTHON-GOOGLE > http://groups.google.com.br/group/python-google
--
DOTNET-BRASIL > http://groups.google.com.br/group/dotnet_br
============================================================

 

Felipe Djinn Asmodeu

unread,
Jun 24, 2010, 10:10:48 AM6/24/10
to list...@googlegroups.com
Cara vc está setando o content type para image/jpg e depois da um echo em uma tag html ?!?! oO'
Não vai funcionar mesmo...rsrsrs
O que vc tem que fazer é utilizar a função imagejpeg sem o segundo parâmetro, que ai ela vai ser exibida e não salva....

[]'s

--
============================================================
LEIAM SEMPRE AS REGRAS DA LISTA:



--
Felipe Djinn
Programador de Sistemas
felipedjinn.com.br
twitter.com/FelipeDjinn

Antonio Antunes

unread,
Jun 24, 2010, 9:14:50 AM6/24/10
to list...@googlegroups.com
Sem a menor possibilidade de isso funcionar... só se o banco guardasse
o nome do arquivo da imagem, e não o conteúdo, e esse arquivo ficasse
no próprio diretório do script em questão...

O primeiro código deve funcionar, mas em acessos simultâneos é capaz
de dar problema (uma imagem ser gravada por cima da outra, por
exemplo).

Eu faria um script que retornasse a própria imagem, mudando o header
para image/jpg conforme acima, e na página eu colocava <img
src="arquivo_que_retorna_a_imagem.php?id=X">... acho que é o melhor
jeito!

2010/6/24 Gabriel Bruno Oliveira Mendonça <bruno...@yahoo.com.br>:

Suissa

unread,
Jun 24, 2010, 1:01:26 PM6/24/10
to list...@googlegroups.com
Até hj nao vi utilidade de guardar fotos em campo blob, soh se forem tipo secretas, mapas, sei la. Mas recuperar isso sempre eh um saco, mto melhor colocar num diretorio e guardar os links, claro se forem fotos abertas ao pblico =D

2010/6/24 Jonatan Froes <jonata...@gmail.com>

--
============================================================
LEIAM SEMPRE AS REGRAS DA LISTA:
http://groups.google.com.br/group/listaphp/web/regras-da-lista-php
--
LISTA PHP > http://groups.google.com.br/group/listaphp
--
REVISTA PHP > http://www.revistaphp.com.br
--
AJAX-BRASIL > http://groups.google.com/group/ajax-brasil
--
PYTHON-GOOGLE > http://groups.google.com.br/group/python-google
--
DOTNET-BRASIL > http://groups.google.com.br/group/dotnet_br
============================================================



--
Jean C. Nascimento aka Suissa

skype: suissa_pg
gtalk: jnasc...@gmail.com

http://twitter.com/suissacorp
http://www.suissacorp.com.br/
http://facebook.com/suissacorp

WebDeveloper
http://twitter.com/wgbnet
http://www.wgbnet.com.br/
http://www.linkedin.com/companies/wgbnet

NOSQL Evangelist
http://nosqlbr.com.br/
http://twitter.com/nosqlbr
http://facebook.com/nosqlbr
http://groups.google.com/group/nosqlbr

Zaedy Sayão

unread,
Jun 24, 2010, 1:04:22 PM6/24/10
to list...@googlegroups.com
Se não for foto aberto ao público, vc pode colocar numa pasta que não seja mapeada para fora e acessar as fotos pelo php apenas e controlar o acesso a página que visualiza.

[]'s
Zaedy Dantas Sayão
Graduando em Ciência da Computação DCC/UFRJ
http://www.manufato.com.br/
MSN: zaedy...@hotmail.com

Jônatan Fróes

unread,
Jun 24, 2010, 1:10:23 PM6/24/10
to LISTA PHP
Eu também nunca vi vantagem nisso, mas o sistema está em uso há uns 4
anos e não tenho outra alternativa...

Jônatan Fróes

unread,
Jun 24, 2010, 1:11:08 PM6/24/10
to LISTA PHP
Felipe, poderia dar um exemplo?

usei o código abaixo e a página forçou o download do arquivo php...

header('Content-type: image/jpg');

$data = $dados[0]['FOTO'];

$img_blob = imagecreatefromstring($data);

imagejpeg($img_blob)or die('Não foi possível criar o arquivo');



On 24 jun, 11:10, Felipe Djinn Asmodeu <lfrs....@gmail.com> wrote:
> Cara vc está setando o content type para image/jpg e depois da um echo em
> uma tag html ?!?! oO'
> Não vai funcionar mesmo...rsrsrs
> O que vc tem que fazer é utilizar a função imagejpeg sem o segundo
> parâmetro, que ai ela vai ser exibida e não salva....
>
> []'s
>

Antonio Antunes

unread,
Jun 24, 2010, 1:18:33 PM6/24/10
to list...@googlegroups.com
Cara, faz assim... uma página vc deixa como foto.php, e o seguinte conteudo

<?php
header('Content-type: image/jpg');
<LEITURA DOS DADOS DO BANCO, PREENCHIMENTO DO $dados>


$data = $dados[0]['FOTO'];

echo $data;
?>

daí, na outra, q eh o .php da pagina q vai ter a foto sendo exibida,
vc coloca algo como:

<img src="foto.php?id=<?php echo $id; ?>">

nessa foto.php, vc recebe o ID pelo $_GET["id"]... o ideal é que vc
faça algum tipo de validação dessa informação, para que o usuário não
possa trocar o ID na url e ir vendo as fotos dos outros, o que não é
desejável.

Mas só assim já funciona...

2010/6/24 Jônatan Fróes <jonata...@gmail.com>:

Felipe Djinn Asmodeu

unread,
Jun 24, 2010, 2:25:00 PM6/24/10
to list...@googlegroups.com
É como o "Antônioooooo Nunes!!!" ( mals a brincadeira, não resisti!! ) falou...
Seria um arquivo somente para recuperar a imagem, na no seu html vc chama ele como atributo src das imagens....

Eu tive que arrumar a parte de imagens de um sistema que fazia exatamente assim.....tosco rsrsrs

[]'s

2010/6/24 Jônatan Fróes <jonata...@gmail.com>

Jônatan Fróes

unread,
Jun 25, 2010, 1:06:45 PM6/25/10
to LISTA PHP
Cara, a página ainda fica em branco...
Alguma idéia?

On 24 jun, 14:18, Antonio Antunes <ikkize...@gmail.com> wrote:
> Cara, faz assim... uma página vc deixa como foto.php, e o seguinte conteudo
>
> <?php
>   header('Content-type: image/jpg');
>   <LEITURA DOS DADOS DO BANCO, PREENCHIMENTO DO $dados>
>   $data = $dados[0]['FOTO'];
>   echo $data;
> ?>
>
> daí, na outra, q eh o .php da pagina q vai ter a foto sendo exibida,
> vc coloca algo como:
>
> <img src="foto.php?id=<?php echo $id; ?>">
>
> nessa foto.php, vc recebe o ID pelo $_GET["id"]... o ideal é que vc
> faça algum tipo de validação dessa informação, para que o usuário não
> possa trocar o ID na url e ir vendo as fotos dos outros, o que não é
> desejável.
>
> Mas só assim já funciona...
>
> 2010/6/24 Jônatan Fróes <jonatanfr...@gmail.com>:

Felipe Djinn Asmodeu

unread,
Jun 25, 2010, 1:47:05 PM6/25/10
to list...@googlegroups.com
Sem nenhum erro ?!?!?

Jônatan Fróes

unread,
Jun 25, 2010, 2:36:33 PM6/25/10
to LISTA PHP
sem nenhum erro... #crazy

On 25 jun, 14:47, Felipe Djinn Asmodeu <lfrs....@gmail.com> wrote:
> Sem nenhum erro ?!?!?
>

Joao Gabriel Nóbrega dos Santos

unread,
Jun 25, 2010, 2:47:30 PM6/25/10
to list...@googlegroups.com
posta teu codigo ai brow!

Joao Gabriel Nóbrega dos Santos
Desenvolvedor WEB
Diário Associados/PB
twitter.com/joao2507
+55 83 8825-2740


2010/6/25 Jônatan Fróes <jonata...@gmail.com>

Marcelo Mota

unread,
Jun 21, 2013, 8:52:54 AM6/21/13
to list...@googlegroups.com
Colegas,

CONSEGUI ASSIM.

1. Considerando que a foto/pdf esta armazenada num campo FOTO e a extensao do arquivo esta no campo EXTENSAO (jpg) ou (pdf) no caso;

no arquivo mostrar.php coloque:
<?
//funcoes de conexao com o banco FB
include("frmglobal.php");
if (isset($_GET['id'])) //recebe o id de onde esta a foto ou o pdf
{
$id = $_GET["id"];
$r1=exeBD("select extensao,foto from TABELA where id=$id");
$registro = ibase_fetch_assoc($r1);
if ($registro["EXTENSAO"]==strtolower("pdf"))
header("Content-Type: application/pdf");
else
header("Content-Type: image/jpeg");
ibase_blob_echo($registro["FOTO"]);
};
//Obs: não deve conter nada de HTML, senão retorna ERRO - header
?>

Funcionou nos 3 navegadores: IE, Mozilla e Chromme.

Quebrei muito o juízo, mas foi só estudar o manual que rolou. E tem vários exemplos com mais funcionalidades, porém esta resolveu meu problema.

Abraço a todos.

Marcelo Mota
TI/COHM
Reply all
Reply to author
Forward
0 new messages