ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Salvar Imagem no SQLite

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Mobile com Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
adalbertomesquita
Experiente
Experiente


Registrado: Segunda-Feira, 4 de Agosto de 2008
Mensagens: 402
Localização: Brasília

MensagemEnviada: Seg Abr 01, 2019 3:08 pm    Assunto: Salvar Imagem no SQLite Responder com Citação

Boa tarde Pessoal!
Tenho um projeto no Banco SQLite onde tenho um campo do tipo Image.
Estou tentando salvar uma imagem nesse campo mas aparece o seguinte erro qdo tento:
'Cannot assign a Timage to a TBlobField'

Estou salvando da seguinte forma:
if not (dmLogin.qrTempFotos.State in dsEditModes) then
dmLogin.qrTempFotos.Edit;
dmLogin.qrTempFotosFOTO1.Assign(Image5);
dmLogin.qrTempFotos.Post;

Alguém tem ideia do que fazer para funcionar?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Ter Abr 02, 2019 1:56 am    Assunto: Responder com Citação

Dificilmente recomendaria salvar imagem em banco, pois a mesma causa uma estabilidade ao banco quando não planejado com o maximo de cuidado.

Quanto ao uso de campos blob, saiba que este campo é possivel amarzenar tudo que se imagine, até mesmo um executavel e ja era um grande dor de cabeça para banco bem mais extruturado o que dirá para uma sqllite.

Eu em seu lugar esqueceria os campos blob e trabalharia com campos text, isso mesmo.
imagem no formato png.

O caminho seria mais ou menos assim:

Para salvar caso a imagem estivesse em um TImage
timage -> tbitmap -> tpngobject -> save in stream -> encode base64 -> sqlite

passos:
1 - converter o bitmap de um Timage em TpngObject - ex: bitmapTopng(image1.picture.bitmap,png_temp)
2 - salvar o conteudo o TpngObject em um Tstream - ex: png_temp.saveToStream(my_stream)
3 - converter o conteudo do Tstream em uma string base64 ex: base64.loadfromStream(my_stream)
4 - salvar a string base64 em um campo texto

para carregar a imagem do sql para Timage
sqlite -> decode base64 -> load in stream -> Tpngobject -> tbitmap -> Timage

passos:
1 - puxar do banco o texto que contem a imagem em base64
2 - decodificar o base64 em um Tstream - ex: base64.SaveToStream(my_stream)
3 - carregar o conteudo de um tpngobjet com o Tstream - ex: png_temp.loadformstream(my_stream)
4 - carregar o bitmap de um timagem com o tpngobjet - ex: image1.picture.bitmap.assign(png_temp)

parece facil não é?

Em se tratando de mobile voce nem precisa trabalhar com pngobject, pois o proprio Tbitmap no android já é deste formato, estranho mais é verdade.
_________________
Tudo podemos quando tudo sabemos!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Mobile com Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB