Fórum JPG em Interbase... #286914
04/07/2005
0
No SpeedButton tinha esta função:
procedure T_FormCliente.SpeedButton11Click(Sender: TObject); var FileStream : TFileStream; BlobStream : TBlobStream; begin Table1.edit; if Opendialog1.Execute then begin FileStream := TFileStream.Create(OpenDialog1.FileName, fmOpenRead or fmShareDenyWrite); BlobStream := TBlobStream.Create(Table1Fig1, bmWrite); try BlobStream.CopyFrom(FileStream, FileStream.Size ); finally FileStream.Free; BlobStream.Free; end; end else Abort;
no evento onchange do Datasource( isto para visualizar );
procedure T_FormCliente.DataSource1DataChange(Sender: TObject; Field: TField); var BlobStream : TBlobStream; JpegImage : TJPEGImage; begin BlobStream := TBlobStream.Create(Table1Fig1, bmRead); if BlobStream.Size <> 0 then Begin Image3.Visible := true; JpegImage := TJPEGImage.Create; Try JpegImage.LoadFromStream(BlobStream); Image3.Picture.Assign(JpegImage); Finally BlobStream.Free; JpegImage.Free; End; End Else Image3.Visible := false;
Será que tem algo similar á isto ?
Outra coisa na tabela em paradox o campo era Binary, e como ficaria isto no IB...
Valeu espero que possam me ajudar, este banco de dados é bém complicado para mexer...tá doido ....t+
Gigatel
Curtir tópico
+ 0Posts
04/07/2005
Sandra
Encontrei estes tópicos e espero que ajude a buscar o que está procurando:
- [url=http://forum.clubedelphi.net/viewtopic.php?t=64501&highlight=blob+subtype]Salvar arquivo em campo BLOB[/url]
- [url=http://forum.clubedelphi.net/viewtopic.php?t=63431&highlight=blob+subtype]Delphi 7 - Firebird 1.5 - Gravar Foto[/url]
- [url=http://forum.clubedelphi.net/viewtopic.php?t=63354&highlight=blob+subtype]Sobre Gravar Imagem no BD e Tb Usar Códigos[/url]
- [url=http://forum.clubedelphi.net/viewtopic.php?t=61113&highlight=blob+subtype]Gravar imagem no Interbase[/url]
Sobre o campo Blob:
- [url=http://forum.clubedelphi.net/viewtopic.php?t=62452&highlight=blob+subtype]Campo Blob´s qdo usar ...[/url]
- [url=http://forum.clubedelphi.net/viewtopic.php?t=62122&highlight=blob+subtype]Tipo Blob - Qual Sub Type[/url]
Espero que ajude!
Gostei + 0
05/07/2005
Gigatel
procedure T_FormCliente.SpeedButton11Click(Sender: TObject); begin if Opendialog1.Execute then begin DM1.BD_Clientes.edit; Image3.Picture.LoadFromFile(Opendialog1.FileName); DM1.BD_ClientesGS_CLI_FIGURA.LoadFromFile(Opendialog1.FileName); end;
Tentei este que estava no mesmo tópico para visualizar:
var BS:TStream; MinhaImagem:TJPEGImage; Campo:tblobfield;Foto:timage; begin if Campo.AsString <> ´´ Then begin BS := TStream.Create; BS := Campo.DataSet.CreateBlobStream((Campo as Tblobfield),bmread); MinhaImagem := TJPEGImage.Create; MinhaImagem.LoadFromStream(BS); Image3.Picture.Assign(MinhaImagem); BS.Free; MinhaImagem.Free; end else Image3.Picture.Assign(nil); end;
sem sucesso...
este é o que eu uso em Paradox num teria um jeito de reformular para funcionar no IB ?
procedure T_FormCliente.DataSource1DataChange(Sender: TObject; Field: TField); var BlobStream : TBlobStream; JpegImage : TJPEGImage; begin BlobStream := TBlobStream.Create(DM1.BD_ClientesGS_CLI_FIGURA, bmRead); if BlobStream.Size <> 0 then Begin Image3.Visible := true; JpegImage := TJPEGImage.Create; Try JpegImage.LoadFromStream(BlobStream); Image3.Picture.Assign(JpegImage); Finally BlobStream.Free; JpegImage.Free; end; end else Image3.Visible := false;
o código acima dá um pau danado...
Valeu....
Gostei + 0
05/07/2005
Cabelo
procedure T_FormCliente.DataSource1DataChange(Sender: TObject;
Field: TField);
var
BlobStream : TBlobStream;
JpegImage : TJPEGImage;
begin
BlobStream := TBlobStream.Create(DM1.BD_ClientesGS_CLI_FIGURA, bmRead);
if BlobStream.Size <> 0 then
Begin
Image3.Visible := true;
JpegImage := TJPEGImage.Create;
Try
JpegImage.LoadFromStream(BlobStream);
Image3.Picture.Graphic.Assign(JpegImage);
Finally
BlobStream.Free;
JpegImage.Free;
end;
end
else
Image3.Visible := false;
Gostei + 0
05/07/2005
Gigatel
deu uma mesagem de erro
typecaste de classe inválido.
Gostei + 0
05/07/2005
Sremulador
Gostei + 0
05/07/2005
Gigatel
pra que ? declarar esta unit ?
Gostei + 0
05/07/2005
Cabelo
Gostei + 0
05/07/2005
Gigatel
Blob..ele está gravando na IB ´so num tô conseguindo visualizar.
Gostei + 0
06/07/2005
Cabelo
Faço uma cópia do blob no HD, om um nome qualquer.. depois dou um loadfromfile deste arquivo no componente TImage
funciona legal..
só não esqueça de deletar o arquivo depois da visualização..
Gostei + 0
06/07/2005
Gigatel
interessante...vou ver isso...
Gostei + 0
06/07/2005
Gigatel
var FileStream : TFileStream; BlobStream : TBlobStream; begin BD_Clientes.edit; if Opendialog1.Execute then begin FileStream := TFileStream.Create(OpenDialog1.FileName, fmOpenRead or fmShareDenyWrite); BlobStream := TBlobStream.Create(BD_ClientesGS_CLI_FIGURA, bmWrite); try BlobStream.CopyFrom(FileStream, FileStream.Size ); finally FileStream.Free; BlobStream.Free; end; end else Abort;
Nesta linha
[/code]
BlobStream := TBlobStream.Create(BD_ClientesGS_CLI_FIGURA, bmWrite);
tanto para gravar como para visualizar///
Gostei + 0
07/07/2005
Gigatel
Para inserir a imagem.
Lista:
OpenPictureDialog.
Speed Butoon
Image
No lugar onde está escrito ´ ´GS_CLI_FIGURA´ é o campo da tabela onde vai armazenar a foto.
em um speed butoon.
If Not OpenPictureDialog1.Execute Then Exit; Image3.Picture.LoadFromFile( OpenPictureDialog1.FileName ); If DataSource1.DataSet.State = dsBrowse Then DataSource1.DataSet.Edit; GravaFoto( ´GS_CLI_FIGURA´, OpenPictureDialog1.FileName );
criar duas funções ( para facilitar más coloque do jeito que achar melhor )
eu declarei aki...
public Procedure GravaFoto( NomeCampo, FileName: String ); Procedure ObtemFoto( NomeCampo: String; Var imgDestino: TImage );
AS funções
Procedure T_FormCliente.GravaFoto( NomeCampo, FileName: String ); Var stImagem: TFileStream; Begin stImagem := TFileStream.Create( FileName, fmOpenRead Or fmShareDenyWrite ); Try TBlobField( DataSource1.DataSet.FieldByName( NomeCampo ) ).LoadFromStream( stImagem ); Finally stImagem.Free; End; End; Procedure T_FormCliente.ObtemFoto( NomeCampo: String; Var imgDestino: TImage ); Var jpgImg: TJPEGImage; stMem: TMemoryStream; Begin If TBlobField( DataSource1.DataSet.FieldByName( NomeCampo ) ).IsNull Then Begin imgDestino.Picture := Nil; Exit; End; jpgImg := TJPEGImage.Create; stMem := TMemoryStream.Create; Try TBlobField( DataSource1.DataSet.FieldByName( NomeCampo ) ).SaveToStream( stMem ); stMem.Position := 0; jpgImg.LoadFromStream( stMem ); imgDestino.Picture.Assign( jpgImg ); Finally stMem.Free; jpgImg.Free; End; end;
e para vizualizar eu não consegui colocar no evento DataChange do data source pois aí a foto apareceria automático, más dá pau a solução encontrada é colocar nos botões de avançar e voltar e no evento Onshow da tabela,
o código:
_FormCliente.ObtemFoto( ´GS_CLI_FIGURA´, _FormCliente.Image3 );
Valeu a todos que me ajudaram, más tem mais bombas por aí...está da figura foi apenas um aperitivo...e fica aí a função completa e sem gambiarras...valew..mesmo..
Gostei + 0
07/07/2005
Sremulador
Gostei + 0
11/07/2005
Gigatel
veja...o código.
Procedure T_FormCliente.GravaFoto( NomeCampo, FileName: String ); Var stImagem: TFileStream; Begin stImagem := TFileStream.Create( FileName, fmOpenRead Or fmShareDenyWrite ); Try TBlobField( DataSource1.DataSet.FieldByName( NomeCampo ) ).LoadFromStream( stImagem ); Finally stImagem.Free; End; End; Procedure T_FormCliente.ObtemFoto( NomeCampo: String; Var imgDestino: TImage ); Var jpgImg: TJPEGImage; stMem: TMemoryStream; Begin If TBlobField( DataSource1.DataSet.FieldByName( NomeCampo ) ).IsNull Then Begin imgDestino.Picture := Nil; Exit; End; jpgImg := TJPEGImage.Create; stMem := TMemoryStream.Create; Try TBlobField( DataSource1.DataSet.FieldByName( NomeCampo ) ).SaveToStream( stMem ); stMem.Position := 0; jpgImg.LoadFromStream( stMem ); imgDestino.Picture.Assign( jpgImg ); Finally stMem.Free; jpgImg.Free; End; end;
estranho...muito estranho...
para visualizar uso este código
_FormCliente.ObtemFoto( ´GS_CLI_FIGURA´, _FormCliente.Image1 );
valeu...
Gostei + 0
11/07/2005
Kapak
http://homepages.borland.com/efg2lab/Library/Delphi/Graphics/JpegErrors.txt
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)