Boa tarde! Vamos lá: Se a imagem está no seu TImage e vc quer salvar no banco de dados, então pode usar esta função:
procedure GravaFoto(DataSet : TDataSet; BlobFieldName, FileName : String; Nome: String); var ext, mDir : string; JpegImage : TJPEGImage; bitmap:TBitMap; begin if (DataSet.State in [dsEdit,dsInsert]) then begin mDir := ExtractFileDir(FileName); ext := UpperCase(ExtractFileExt(FileName)); if (ext <> '.BMP') and (ext <> '.JPG') and (ext <> '.JPEG') then begin raise EAccessViolation.Create('Formato de imagem não suportado! '+ 'Formato suportado: Jpeg ou Bitmap'); Abort; end; try JpegImage := TJpegImage.Create; Bitmap := TBitmap.Create; if (ext = '.BMP') then begin Bitmap.LoadFromFile(FileName); JpegImage.Assign(Bitmap); JpegImage.Compress; end else JpegImage.LoadFromFile(FileName); JpegImage.SaveToFile(Nome + '.JPG'); (DataSet.FieldByName(BlobFieldName) as TBlobField).LoadFromFile(Nome + '.JPG'); DataSet.Post; DeleteFile(PChar(FileName)); DeleteFile(PChar(mDir + '.JPG')); finally Bitmap.Free; JpegImage.Free; end; end; end; vc deve chama-la mais ou menos assim: GravaFoto(nomeDaTabela, nomeDoCampoDaTabela, NomeQueVcDaraAoArquivo); Perceba que essa função já salva em formato JPG que ocupa menos espaço no seu Banco de Dados --Para exibir uma foto que está em um Banco de Dados eu uso a função: procedure ExibeFoto(DataSet : TDataSet; BlobFieldName : String; ImageExibicao : TImage); var BlobStream : TStream; JpegImage : TJPEGImage; bitmap:TBitMap; begin BlobStream := DataSet.CreateBlobStream(DataSet.FieldByname(BlobFieldName), bmRead); if BlobStream.Size <> 0 then begin JpegImage := TJPEGImage.Create; try JpegImage.LoadFromStream(BlobStream); ImageExibicao.Picture.Assign(JpegImage); ImageExibicao.Center:=true; finally BlobStream.Free; JpegImage.Free; end; end else begin Bitmap:=TBitMap.Create; Try Bitmap.Width:=1; Bitmap.Height:=1; ImageExibicao.Picture.Assign(BitMap); ImageExibicao.Center:=false; finally Bitmap.Free; BlobStream.Free; end; end; end; você deve chama-la mais ou menos assim: ExibeFoto(NomeDaTabela, NomeDoCampo, NomeDoTImageParaExibicao); Para Deletar uma imagem, eu faço isso via transação: try Transacao.TransactionID := 1; Transacao.IsolationLevel := xilREPEATABLEREAD; dmMain.sqlMain.StartTransaction(Transacao); dmCadastro.sdsTransacao.Close; dmCadastro.sdsTransacao.CommandType := ctQuery; dmCadastro.sdsTransacao.CommandText := 'delete from fotos where rf = 'instrução sql'; dmCadastro.sdsTransacao.ExecSQL; dmMain.sqlMain.Commit(Transacao); except on Exc: Exception do begin Application.MessageBox('Ocorreu um erro durante a exclusão do registro.', 'Erro', MB_OK + MB_ICONSTOP); dmMain.sqlMain.Rollback(Transacao); end; end; Para exportar a imagem para algum diretório do disco, eu uso a seguinte função: procedure ExibeFoto(DataSet : TDataSet; BlobFieldName : String; ImageExibicao : TImage); var BlobStream : TStream; JpegImage : TJPEGImage; bitmap:TBitMap; begin BlobStream := DataSet.CreateBlobStream(DataSet.FieldByname(BlobFieldName), bmRead); if BlobStream.Size <> 0 then begin JpegImage := TJPEGImage.Create; try JpegImage.LoadFromStream(BlobStream); ImageExibicao.Picture.Assign(JpegImage); ImageExibicao.Center:=true; finally BlobStream.Free; JpegImage.Free; end; end else begin Bitmap:=TBitMap.Create; Try Bitmap.Width:=1; Bitmap.Height:=1; ImageExibicao.Picture.Assign(BitMap); ImageExibicao.Center:=false; finally Bitmap.Free; BlobStream.Free; end; end; end; Caso você nunca tenha salvo imagens em Danco de Dados e caso o banco seja MySql(é o que uso) vai uma dica de lambuja: No arquivo my.ini que geralmente está em C:\Arquivos de programas\MySQL\MySQL Server 5.0,você deverá digitar na última linha: max_allowed_packet=10M para que assim ele suporte arquivos de tamanhos alem do normal(que é o caso de imagens) e não exiba e mensagem de erro: "MySQL server has gone away" Outra coisa, observe que em nenhum momento uso o DbImage, pois como o colega informou anteriormente, o DbImage não suporta JPG ou JPEG. Uso sempre o TImage. Espero ter ajudado, qualquer dúvida, poste ai pois caso eu não possa ajudar, alguém poderá. Fraterno abraço, Carlos