Preciso criar uma pequena aplicação que lê uma imagem jpeg em uma pasta local e salve-a no banco.
Porém, como tenho imagens grandes, ao invés de simplesmente salvar a a imagem direto no campo tipo blob/bytea, ou simplesmente gravar caminho e arquivo, preciso convertê-las em texto (base64) antes de gravar.
Quando o usuário consultar o cadastro, o sistema lê o campo no formato base64 gravado no banco, converte para imagem de volta e exibe no formulário.
Alguém saberia como posso fazer isso no ScriptCase, estou começando a usar e ainda não sei.
Você vai ter que criar uma blank no scriptcase e adaptar este código:
$caminho=$this->Ini->path_imagens.'\';
$img = glob($caminho."*.{jpg,png,gif}", GLOB_BRACE);
$contador = count($img);
foreach ($img as $img) {
$imagem='<a href=""><img src="'.$img.'" /></a>';
// echo $imagem."<BR>"; Imagem Simples sem base64.
$img_file=$img;
// Ler o arquivo de imagem na pasta, converter para base64
$imgData64 = base64_encode(file_get_contents($img_file)); // Essa variável pode gravar no MySQL.
// Parte Opcional só para mostrar a imagem codificada base64
// Formatar Para Mostrar no Navegador SRC: data:{mime};base64,{data};
$src = 'data: '.mime_content_type($img_file).';base64,'.$imgData64;
// Aqui Mostramos ela já como BASE64
echo '<img src="'.$src.'">';
}
Em relação a esta dúvida, eu verifiquei depois que se gero um formulário já com o campo blob o Scriptcase já mostra a imagem, sem que eu faça nada !
Minha dúvida é como esta imagem está sendo gravada no banco (Postgres), esta conversão já é feita automaticamente ou não ?
Minha preocupação é o tamanho das imagens, que poderiam tornar o banco imenso, por isso iria usar a conversão para base64 antes de salvar, como fazia em minhas aplicações Delphi.
Ok, vamos fazer um ‘teste’ faça uma app formulário do SC e grave uma imagem pequena para teste no banco no campo BLOB, depois crie uma aplicação ‘Controle’, e tente listar essa imagem normal,
sem usar o ‘DECODE’.
Sem USAR ‘DECODE’:
CARREGAR IMAGEM A PARTIR DE CAMPO BLOB NA BASE DE DADOS
$_sql = " SELECT Foto"
. " FROM imagens"
. " WHERE id = ‘".[ID]."’";
sc_lookup(rs, $_sql);