kanedasam Novato

Registrado: Domingo, 5 de Janeiro de 2003 Mensagens: 33
|
Enviada: Ter Mai 20, 2003 8:58 pm Assunto: Jpeg me ajudem ! |
|
|
Ola pessoal !
Estou com a seguinte duvida e questionamento tenho o seguinte código para incluir uma imagem JPG ou JPEG
if OpenPictureDialog1.Execute
then
begin
DataModule1.TabIncCad.edit;
DbImage1.Picture.LoadFromFile(OpenPictureDialog1.Filename);
End
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
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;
e para ler
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;
e adaptei para minha necessidade da seguinte forma
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;
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.
_________________
Washington M. almeida
_________________ WASHINGTON M. ALMEIDA
washington@skysat.com.br
|
|