[RESOLVIDO]CRITICO! Recuperando imagem em BD para pagina na web

Ola amigos, boa tarde.

Tenho um form que cadastra um banner e os demais dados de um curso, funcionando belezinha, a imagem fica gravada no banco, num campo tipo blog, esta funcionando, o SC reconhece e exibe normalmente a foto.

Estou integrando o sistema com o site (html e php sem SC), na hora de recuperar a imagem, a imagem não vem fica só o quadrado.

Estou utilizando o codigo abaixo.:

Na pagina onde quero que apareça a imagem eu fiz esse codigo abaixo. mais adiante o codigo do exibe_img.php…

<?php 
	$id_imagem = 6; //para exemplificar			
	echo "<img src='exibe_img.php?id=".$id_imagem."'>";
?>

CODIGO exibe_img.php

<?php
//RECEBE PARÂMETRO  
$id = $_GET["id"];  

//CONECTA AO MYSQL                                               
include('conn.php');

//EXIBE IMAGEM                                                                        
$sql = mysql_query("SELECT curs_id, curs_banner FROM sophis_curso WHERE curs_id = ".$id."");         

$row = mysql_fetch_array($sql, MYSQLI_ASSOC);    

   $bytes  = $row["curs_banner"];                        

   //EXIBE IMAGEM           
    header("Content-type: image/jpeg");
   echo $bytes;  
?>

Aguem tem ideia do que pode ser?!

Abraço

Luis Gustavo

Aparentemente o código está correto, porem nesta linha:

header("Content-type: image/jpeg");

como vc está garantindo que o tipo da imagem armazenada é realmente jpg? se for um png que tem o alpha, será que pode corromper?

ou pior ainda:

Será que o que está armazenado é mesmo uma imagem?

Dê uma olhadinha talvez te ajude: http://www.rstoever.com/2006/10/30/recuperar-img-do-mysql-e-transf-thumb´s/

Outro link:

http://www.vivaolinux.com.br/script/PHP5-gravando-recuperando-e-deletando-imagens-no-banco-de-dados-MYSQL

Depois provavelmente tenha que fazer uma validação, porem eu mesmo inclui uma imagem .jpg para teste e era para funcionar, acredito eu…
viu algo de errado, ou tem alguma solução?

abs

Não ajudou muita coisa, um exemplo era de arquivo em diretório e o outro não funcionou… mesma coisa…

Estou na mesma. peguei um exemplo que funcionando na net que faz o armazenamento no banco e a imagem acaba aparecendo depois funcionando perfeito, como no meu codigo.

Será que é a maneira em que o SC armazena no banco!? alguem tem ideia, ou um exemplo funcional trabalhando com SC?

abs

Na verdade pra armazenar imagem em banco no sc é bem facil. Só definir o tipo do campo como imagem salva em banco.

Ele ja salva, faz tratamento e exibe.

Para exibir em outro lugar, em um outro form por exemplo, apenas dar um SELECT nome_do_campo FROM tabela … e armazernar o {rs[0][0]} no campo.

Sem muito segredo.

Porem, corrija-me se estiver errado, vc está querendo exibir em uma página não gerada pelo SC, certo?

Não tenho certeza tbm, mas a codificação da pagina não influi na hora de recuperar os dados do banco? Alguem poderia ajudar nessa questão?

Exatamente meu caro, o SC fica tudo show, em qualquer lugar exibo a foto tranquilo.
A questão é que preciso que uma pagina web que não tem nada a ver com o SC exiba a imagem armazenada por ele.

A codificação influi sim até alterei o header para poder exibir a imagem, sem altera-lo a pagina mostra o binário armazenado no banco (texto).

header(“Content-type: image/jpeg”);

LuisGustavo,

Eu tive vários problemas em armazenamento de imagens/arquivos diretamente no banco…

Hoje pelos pros e contras, eu fico com o armazenamento no disco, somente o nome da imagem no banco…

De cara você já resolve seu problema… e evita outras limitações que você vai ter no futuro…

Espero ter ajudado

T+

Infelizmente, não posso usar em arquivo, pois faço interação entre 3 sistemas… as imagens precisam estar no banco…

Mas se ninguem sabe, terei que fazer uma aplicação blank para fazer o upload para o banco usando php puro ao invés de SC.

:frowning:

Olá Luis Gustavo, Boa noite!

Eu estava com um problema na recuperação de Arquivo Nome de Imagem, Eu consegui resolver instalando a Biblioteca Gráfica do PHP!

Veja se a GD do PH5 está instalada, caso contrário instale com o seguinte comando:

sudo apt-get install php5-gd

Veja se esta instalação resolve seu problema!

Daniel

Pessoal,

Ultimamente não ando com cabeça boa pra me concentrar nos problemas específicos deste e de outros foruns dos quais participo, mas a solução que utilizo muito bem é colocar a imagem (BLOB) numa variável de memória, vejam o script abaixo comentado

// Buscando LOGO - Menu da Empresa... // Imaginando que o campo [b][i]clientes_img[/i][/b] seja a imagem (logo) de um determinado cliente.

$sql_LogoCliente = “SELECT clientes_img FROM clientes WHERE clientes_id = {clientes_id}”;
sc_lookup(data_LogoCliente ,$sql_LogoCliente );
if (isset({data_LogoCliente[0][0]})) // Imagem encontrada…
{

    // Salvarei a imagem encontrada em uma variável de memória....
$varImg=base64_encode({data_imgMenu[0][0]});
    
    {logo_da_empresa} = "<img border=[size=8pt]0[/size] height='[size=8pt]63px[/size]' src='data:image/png;base64,$varImg'>";  // 63 é o tamanho em pixel da imagem. Você pode definir a borda também...

}

else // Imagem não encontrada…

{

{logo_da_empresa} = 'Logotipo não Configurado.';

}


Buscada a imagem e colocada na memória, substituo o campo do tipo imagem por um campo criado manualmente do tipo texto

Não tenho qualquer problema com isso.

1 Curtida

Jovito,

Não entendi o final: “Buscada a imagem e colocada na memória, substituo o campo do tipo imagem por um campo criado manualmente do tipo texto”.
Você poderia dar mais detalhes? Estou fazendo a mesma coisa numa aplicação tipo controle, mas não consigo mostra a imagem.
Tenho uma tabela1 com 3 campos: id, imagem, texto

Tenho outra tabela2 com 9 campos: pos11, pos12, pos13, pos21, pos22, pos23, pos31, pos32, pos33 que se referem a 9 blocos que terei em minha tela principal. A ideia é criar uma aplicação controle que possa mostrar estes nove blocos, mas o conteúdo será parametrizado.

Nesta aplicação controle, seleciono na tabela2 no campo pos11 o registro onde está a imagem e o texto que será mostrado no bloco 11 da tela controle.

Nela também haverá um bloco para colocar login e senha. A mesma será minha aplicação de entrada. Como se fosse um portal. Não sei se consegui me explicar bem.

O problema é que não estou conseguindo mostrar este campo imagem na aplicação controle.
Agradeço qualquer ajuda.

Obrigado,

Orlando Donin

$logo = ‘Imagem não Encontrada.’;

sc_lookup(rs, “Select nome_fantasia, logo, cnpj from empresa_cad
where id = '”.[ID_EMPRESA_LOGO]."’");

if (isset({rs[0][1]})) // Verifica se o campo esta preenchido
{
$varImg=base64_encode({rs[0][1]});
// Aqui você transportou o conteúdo de uma imagem (bytea) para uma variável…

    $logo = "<img border=0 height='50px' src='data:image/png;base64,$varImg'>"; // 50px é o tamanho a ser mostrado...
	
	
     }

[LOGO] = $logo;

// a variável Global eu levo para qual quer lugar no sistema
// eu uso para preencher o cabecalho das Grid vide imagem abaixo
https://bit.ly/2ENxU6V

Qual campo que usa para mostrar a imagem, tipo valor ou imagem?

Joelton, Primieiro eu recupero a imagem do banco para uma Variável, depois eu exibo esta variável no cabeçalho da grid que eu editei para ficar do jeito que eu quero.

{NOME_relatorio} <td {empresa}
{CNPJ} {btn_Sair}
  </td>
</tr>	
{logo} {sel_filial}
{data} {hora}
{Usuario_logado}
{filtro}

na grid eu altero o layout do cabeçalho para o que eu editei e preencho os campo “{variavel}” do layout com as variáveis globais

se tiver duvidas me chama no whatsapp (87) 9 8825-4970

Obrigado!!! @DiogenesCelestino
Mas meu caso não irá funcionar…

Detalhe melhor o que precisa que certamente podemos ajuda!

Obrigado, meu problema é que estava enviado a aplicação por e-mail, e lá imagem somente que esteja no disco… mas já resolvi, trazendo ela para o disco…
Obrigado!