Me ajudem no Problema Inclusão de JPG !
20/05/2003
0
Ola pessoal !
Estou com a seguinte duvida e questionamento tenho o seguinte código para incluir uma imagem JPG ou JPEG
[color=blue:23b1424465]
if OpenPictureDialog1.Execute
then
begin
DataModule1.TabIncCad.edit;
DbImage1.Picture.LoadFromFile(OpenPictureDialog1.Filename);
End[/color:23b1424465]
Que todo mundo conhece, e declaro em uses a unit jpeg, não entendo e o porque a o OpenPictureDialog trás de default JPG ou JPEG so serve para visualizar o formato que e carregado no DbImage1 porem quando você grava a informações o conteúdo do DbImage1, isto é , os arquivos JPG ou JPEG não são gravados . Consegui o seguinte código para gravar estes formatos em tabelas paradox
[color=blue:23b1424465]
Procedure Grava_Imagem_JPEG(Tabela:TTable; Campo:TBlobField;
Foto:TImage; Dialog:TOpenPictureDialog);
var BS:TBlobStream;
MinhaImagem:TJPEGImage;
Begin
Dialog.InitialDir := ´c:\temp´;
Dialog.Execute;
if Dialog.FileName <> ´´ Then
Begin
if not (Tabela.State in [dsEdit, dsInsert]) Then
Tabela.Edit;
BS := TBlobStream.Create((Campo as TBlobField), BMWRITE);
MinhaImagem := TJPEGImage.Create;
MinhaImagem.LoadFromFile(Dialog.FileName);
MinhaImagem.SaveToStream(BS);
Foto.Picture.Assign(MinhaImagem);
BS.Free;
MinhaImagem.Free;
Tabela.Post;
DBISaveChanges(Tabela.Handle);
End;
End;
procedure TForm1.Button1Click(Sender: TObject);
begin
Grava_Imagem_JPEG(TbClientes,TbClientesCli_Foto, Image1,
OpenPictureDialog1);
// TbClientes é o nome de alguma Tabela
// TbClientesCli_Foto é um variavel da tabela do tipo Blob
// Image1 é um componente
// OpenPictureDialog1 é o componente para abrir a figura
end;[/color:23b1424465]
e para ler
[color=blue:23b1424465]
Procedure Le_Imagem_JPEG(Campo:TBlobField; Foto:TImage);
var BS:TBlobStream;
MinhaImagem:TJPEGImage;
Begin
if Campo.AsString <> ´´ Then
Begin
BS := TBlobStream.Create((Campo as TBlobField), BMREAD);
MinhaImagem := TJPEGImage.Create;
MinhaImagem.LoadFromStream(BS);
Foto.Picture.Assign(MinhaImagem);
BS.Free;
MinhaImagem.Free;
End
Else Foto.Picture.LoadFromFile(´c:\temp\limpa.jpg´);
End;
procedure TForm1.Button1Click(Sender: TObject);
begin
Le_Imagem_JPEG(TbClientesCli_Foto, Image1);
// TbClientesCli_Foto é um variavel da tabela do tipo Blob
// Image1 é um componente
end;[/color:23b1424465]
e adaptei para minha necessidade da seguinte forma
[color=blue:23b1424465]
procedure TFormIncCad.ActionAdqImgFileExecute(Sender: TObject);
var
BS:TBlobStream;
ImagJPG:TJPEGImage;
begin
{ if OpenPictureDialog1.Execute
then
begin
DataModule1.TabIncCad.edit;
DbImage1.Picture.LoadFromFile(OpenPictureDialog1.Filename);
end }
if OpenPictureDialog1.Execute then
Begin
if OpenPictureDialog1.FileName <> ´´ Then
Begin
DataModule1.TabIncCad.Edit;
BS := TBlobStream.Create((DataModule1.TabIncCadFoto as TBlobField), BMWRITE);
ImagJPG := TJPEGImage.Create;
ImagJPG.loadFromFile(OpenPictureDialog1.FileName);
ImagJPG.SaveToStream(BS);
DbImage1.Picture.Assign(ImagJPG);
BS.Free;
ImagJPG.Free;
//check(DBISaveChanges(DataModule1.TabIncCad.Handle));
End
End
end;[/color:23b1424465]
Estou com dois problemas , um e a respeito do “DBISaveChanges” em que unit se encontra esta função e o outro e que quando seleciono a imagem e clico em abrir recebo a seguinte mensagem EInvalidGraphic with massege “Bitmap image not is valid”. Alguem me ajude resolver ou se tiver uma sugestão eficaz para inclusão e leitura de JPG e JPEG comvisualização apartir de DBImage eu agradeço muito.
Estou com a seguinte duvida e questionamento tenho o seguinte código para incluir uma imagem JPG ou JPEG
[color=blue:23b1424465]
if OpenPictureDialog1.Execute
then
begin
DataModule1.TabIncCad.edit;
DbImage1.Picture.LoadFromFile(OpenPictureDialog1.Filename);
End[/color:23b1424465]
Que todo mundo conhece, e declaro em uses a unit jpeg, não entendo e o porque a o OpenPictureDialog trás de default JPG ou JPEG so serve para visualizar o formato que e carregado no DbImage1 porem quando você grava a informações o conteúdo do DbImage1, isto é , os arquivos JPG ou JPEG não são gravados . Consegui o seguinte código para gravar estes formatos em tabelas paradox
[color=blue:23b1424465]
Procedure Grava_Imagem_JPEG(Tabela:TTable; Campo:TBlobField;
Foto:TImage; Dialog:TOpenPictureDialog);
var BS:TBlobStream;
MinhaImagem:TJPEGImage;
Begin
Dialog.InitialDir := ´c:\temp´;
Dialog.Execute;
if Dialog.FileName <> ´´ Then
Begin
if not (Tabela.State in [dsEdit, dsInsert]) Then
Tabela.Edit;
BS := TBlobStream.Create((Campo as TBlobField), BMWRITE);
MinhaImagem := TJPEGImage.Create;
MinhaImagem.LoadFromFile(Dialog.FileName);
MinhaImagem.SaveToStream(BS);
Foto.Picture.Assign(MinhaImagem);
BS.Free;
MinhaImagem.Free;
Tabela.Post;
DBISaveChanges(Tabela.Handle);
End;
End;
procedure TForm1.Button1Click(Sender: TObject);
begin
Grava_Imagem_JPEG(TbClientes,TbClientesCli_Foto, Image1,
OpenPictureDialog1);
// TbClientes é o nome de alguma Tabela
// TbClientesCli_Foto é um variavel da tabela do tipo Blob
// Image1 é um componente
// OpenPictureDialog1 é o componente para abrir a figura
end;[/color:23b1424465]
e para ler
[color=blue:23b1424465]
Procedure Le_Imagem_JPEG(Campo:TBlobField; Foto:TImage);
var BS:TBlobStream;
MinhaImagem:TJPEGImage;
Begin
if Campo.AsString <> ´´ Then
Begin
BS := TBlobStream.Create((Campo as TBlobField), BMREAD);
MinhaImagem := TJPEGImage.Create;
MinhaImagem.LoadFromStream(BS);
Foto.Picture.Assign(MinhaImagem);
BS.Free;
MinhaImagem.Free;
End
Else Foto.Picture.LoadFromFile(´c:\temp\limpa.jpg´);
End;
procedure TForm1.Button1Click(Sender: TObject);
begin
Le_Imagem_JPEG(TbClientesCli_Foto, Image1);
// TbClientesCli_Foto é um variavel da tabela do tipo Blob
// Image1 é um componente
end;[/color:23b1424465]
e adaptei para minha necessidade da seguinte forma
[color=blue:23b1424465]
procedure TFormIncCad.ActionAdqImgFileExecute(Sender: TObject);
var
BS:TBlobStream;
ImagJPG:TJPEGImage;
begin
{ if OpenPictureDialog1.Execute
then
begin
DataModule1.TabIncCad.edit;
DbImage1.Picture.LoadFromFile(OpenPictureDialog1.Filename);
end }
if OpenPictureDialog1.Execute then
Begin
if OpenPictureDialog1.FileName <> ´´ Then
Begin
DataModule1.TabIncCad.Edit;
BS := TBlobStream.Create((DataModule1.TabIncCadFoto as TBlobField), BMWRITE);
ImagJPG := TJPEGImage.Create;
ImagJPG.loadFromFile(OpenPictureDialog1.FileName);
ImagJPG.SaveToStream(BS);
DbImage1.Picture.Assign(ImagJPG);
BS.Free;
ImagJPG.Free;
//check(DBISaveChanges(DataModule1.TabIncCad.Handle));
End
End
end;[/color:23b1424465]
Estou com dois problemas , um e a respeito do “DBISaveChanges” em que unit se encontra esta função e o outro e que quando seleciono a imagem e clico em abrir recebo a seguinte mensagem EInvalidGraphic with massege “Bitmap image not is valid”. Alguem me ajude resolver ou se tiver uma sugestão eficaz para inclusão e leitura de JPG e JPEG comvisualização apartir de DBImage eu agradeço muito.
Kanedasam
Curtir tópico
+ 0
Responder
Posts
21/05/2003
Pardal3000
Prezado amigo,
Não sei responder sua pergunta, mas tenho uma dica...
Por que, ao invés de gravar a imagem em uma base de dados, vc não cria uma subpasta com as imagens dentro e grava no db somente o path (caminho para a imagem)? Isso deixará o banco de dados muito mais leve!
Espero ter ajudado,
Pardal3000
Não sei responder sua pergunta, mas tenho uma dica...
Por que, ao invés de gravar a imagem em uma base de dados, vc não cria uma subpasta com as imagens dentro e grava no db somente o path (caminho para a imagem)? Isso deixará o banco de dados muito mais leve!
Espero ter ajudado,
Pardal3000
Responder
Clique aqui para fazer login e interagir na Comunidade :)