[size=12pt]Importante: funcionou para mim e quem sabe php irá adaptar e conseguirá fazer funcionar também.
Logo, não vou responder pedidos de ajuda posteriores neste tópico.
Somente respondo dúvidas fora do fórum (suporte) via faturamento.
Estude php e adapte para você.[/size]
Vamos por partes.
mrcgomes,
O campo “imagem html” irá pegar uma imagem salva no hd onde o scriptcase esta instalado seja produção ou desenvolvimento.
Ela não pega uma imagem em memória.
Ele pega imagens que foram colocadas no scriptcase pelo icone escolher imagem.
Isto está no manual:
http://www.scriptcase.com.br/docs/pt_br/v8/manual_mp.htm#aplicacoes-de-consulta/consulta/campos/imagem-html
Então para mostar contéudo HTML o melhor campo é tipo texto:
http://www.scriptcase.com.br/docs/pt_br/v8/manual_mp.htm#aplicacoes-de-consulta/consulta/campos/texto
Porque ele tem a propriedade mostrar contéudo HTML.
E podemos usar a tag img para mostar a imagem neste tipo de campo.
Premissas pra solução do caso.
-
Saber as variávies do seu servidor como por exemplo onde fica os arquivos temporários.
Isto ajuda porque vamos gravar a imagem em disco para ser mostrada no navegador. Igualzinho a netmake faz.
Alguns servidores tem rotinas de limpeza do diretório temporário.
Isto elimina o risco do seu hd ficar cheio de imagens temporárias após algum tempo.
Se não houver rotinas de limpeza do temporário aconselho a criar uma.
-
A netmake gosta de codificar tudo e por vezes colocar nm na frente de algumas coisas.
É bom aprender isto rápido.
As imagens são gravadas no banco “codificadas” pela netmake.
Aprenda verificar o código gerado para pegar estes “macetes”.
-
Vou usar o exemplo do próprio scriptcase -> sc_album instalado com sqlite para demonstrar como pegar imagens gravadas no banco pelo scriptcase.
-
Não vou ensinar como fazer o tratamento para saber se a imagem guardada no banco é jpg, gif e etc.
Isto tem aos montes na internet e é necessário para saber a extensão da imagen guardada no banco.
De forma a salvar a imagem em disco com a extensão correta.
Por padrão irei usar um arquivo guardado no banco como jpg.
O banco sqlite fica no diretório da instalação do scriptcase: \devel\conf\scriptcase\sc_album.db e pode ser aberto com “Sqlite Administrador” (http://sqliteadmin.orbmu2k.de/).
Primeiro teste:
Crie um blank no projeto sc_album.
No evento onexecute coloque este código comentado:
/* Parte padrão onde seleciono os campos arquivo e id_foto.
Seleciono o id_foto para fazer o nome do arquivo.
Mas você pode criar uma rotina para randomizar o nome.
*/
$sql_img = “select arquivo, id_foto from sc_fotos where id_foto = ‘486’”;
sc_lookup(ds_img, $sql_img);
$imagem= {ds_img[0][0]};
/* Esta parte do código é como a netmake decodifica o arquivo.
Modifiquei as váriaveis originais por motivo de segurança.
Ninguém quer injeção de código
*/
$temp = nm_conv_img_access(substr($imagem, 0, 12));
if (substr($temp, 0, 4) == “nm”)
{
$imagem = nm_conv_img_access($imagem);
}
if (substr($imagem, 0, 4) == “nm”)
{
$imagem = substr($imagem, 4) ;
$imagem = base64_decode($imagem) ;
}
$img_bm = strpos($imagem, “BM”) ;
if (!$img_bm === FALSE && $img_bm == 78)
{
$imagem = substr($imagem, $img_bm) ;
}
// E finalmente mostramos a imagem após ser decodificada.
header(“Content-type: image/jpeg”);
echo $imagem;
mrcgomes notou o macete?
Segundo teste.
Agora vamos fazer um teste numa grid.
No projeto sc_album abra a grid: con_fotos_slide.
Crie um campo chamdo teste no sc. Não precisa criar na base de dados.
No evento onrecord coloque este código abaixo de M_php_legenda(); :
/* Parte padrão seleciono o arquivo e id_foto.
Seleciono o id_foto para fazer o nome do arquivo.
Mas você pode criar uma rotina para randomizar o nome.
*/
$sql_img = “select arquivo, id_foto
from sc_fotos
where id_foto = ‘486’”;
sc_lookup(ds_img, $sql_img);
$imagem= {ds_img[0][0]};
/* Esta parte do código é como a netmake decodifica o arquivo.
Modifiquei as váriaveis originais por motivo de segurança.
Ninguém quer injeção de código
*/
$temp = nm_conv_img_access(substr($imagem, 0, 12));
if (substr($temp, 0, 4) == “nm”)
{
$imagem = nm_conv_img_access($imagem);
}
if (substr($imagem, 0, 4) == “nm”)
{
$imagem = substr($imagem, 4) ;
$imagem = base64_decode($imagem) ;
}
$img_bm = strpos($imagem, “BM”) ;
if (!$img_bm === FALSE && $img_bm == 78)
{
$imagem = substr($imagem, $img_bm) ;
}
/* E finalmente mostramos a imagem após ser decodificada.
salvo ela no hd e chamo no campo criado {teste}
Aqui é importante saber o diretório temporário para colocar na variável $temporário.
rode a app e veja se a imagem sc486.jpg é criada no diretório temporário.
use nas variávies que irão aparecer:
var_id_album: 199
var_id_usuario: user
depois clique em con_fotos_slide
Se foi criado o arquivo na pasta temporária basta ajustar a tag img conforme as variávies do seu servidor.
Deverão aparece duas fotos de um macaco.
Uma do campo imagem html pré-existente e outra do campo texto (teste) que criamos
As minhas variáveis eu irei omitir por motivo de segurança colocando XXXXXXXXXXXX
*/
$temporario=“xxxxxxxxxx/tmp”;
$imagem=imagecreatefromstring($imagem);
imagejpeg($imagem,$temporario."/sc".{ds_img[0][1]}.".jpg");
{teste}= “<img src=http://xxxxxxxxxxx/tmp/sc”.{ds_img[0][1]}.".jpg />";
Dica importante: no campo teste você pode ativar e desativar a propriedade Mostrar conteúdo HTML
não: mostra a foto
sim: mosta o códido html. No caso a tag img.
Assim fica fácil ver onde errou no caminho para a foto.