Erro em fotos do tipo *.jpg

09/08/2004

Salvar imagem com qualquer estensão; *.bmp, *.jpg etc.

No momento que o usuário clica para abrir a foto da o seguinte erro:

(Bitmap image is not valid)

Na propriedade filter, do componente OpenPictureDialog não fiz nenhuma
alteração como no ex. abaixo:
(All (*.gif;*.jpg;*.jpeg;*.bmp;*.ico;*.emf;*.wmf)|*.gif;*.jpg;*.jpeg;*.bmp;*.ico;*.emf;*.wmf|CompuServe GIF Image (*.gif)|*.gif|JPEG Image File (*.jpg)|*.jpg|JPEG Image File (*.jpeg)|*.jpeg|Bitmaps (*.bmp)|*.bmp|Icons (*.ico)|*.ico|Enhanced Metafiles (*.emf)|*.emf|Metafiles (*.wmf)|*.wmf)


Para o usuário capturar a imagem coloquei os comandos abaixo no botão bitbtn:


If dsPadrao.State in [dsInsert, dsEdit] then
if OpenPictureDialog1.Execute then
begin
cdsPadraoCLI_FOTO.LoadFromFile(OpenPictureDialog1.FileName);
SalvarBtn.Enabled := True;
end;


O campo está definido como (blob Sub Type 0).

Utilizo os componentes do dbexpress para acesso ao banco.

Alguem poderia me dar a solução.

Grato pela atenção

Plácido/Ellen


Placido

Respostas

09/08/2004

Placido

Salvar imagem com qualquer extensão; *.bmp, *.jpg etc. No momento que o usuário clica para abrir a foto da o seguinte erro: (Bitmap image is not valid) Na propriedade filter, do componente OpenPictureDialog não fiz nenhuma alteração como no ex. abaixo: (All (*.gif;*.jpg;*.jpeg;*.bmp;*.ico;*.emf;*.wmf)|*.gif;*.jpg;*.jpeg;*.bmp;*.ico;*.emf;*.wmf|CompuServe GIF Image (*.gif)|*.gif|JPEG Image File (*.jpg)|*.jpg|JPEG Image File (*.jpeg)|*.jpeg|Bitmaps (*.bmp)|*.bmp|Icons (*.ico)|*.ico|Enhanced Metafiles (*.emf)|*.emf|Metafiles (*.wmf)|*.wmf) Para o usuário capturar a imagem coloquei os comandos abaixo no botão bitbtn: If dsPadrao.State in [dsInsert, dsEdit] then if OpenPictureDialog1.Execute then begin cdsPadraoCLI_FOTO.LoadFromFile(OpenPictureDialog1.FileName); SalvarBtn.Enabled := True; end; O campo está definido como (blob Sub Type 0). Utilizo os componentes do dbexpress para acesso ao banco. Observação: Só está aceitando gravar campos do tipo bmp, eu quero todos Alguem poderia me dar a solução. Grato pela atenção Plácido/Ellen



Responder Citar

09/08/2004

Emerson

se o erro ocorre quando seleciona imagens .jpg, adicione JPEG na cláusula uses da sua unit.


Responder Citar

09/08/2004

Placido

Emerson fiz o que você orientou , mas o problema persiste.
Grata :roll:


Responder Citar

09/08/2004

Emerson

existem algum componente visual para mostrar a imagem? um TDBImage?

se houver, troque-o por um TImage e carregue a imagem manualmente.


Responder Citar

10/08/2004

Placido

Continuo precisando de ajuda o erro persiste.
Alguem poderia da a solução para este problema que aparentemente parece ser simples, mas eu não estou conseguindo resolver.
Volto a dizer que está gravando somente imagens do tipo bmp, eu quero jpg tambem.
Grato


Responder Citar

10/08/2004

Placido

Conseguimos salvar no banco a imagem jpg, mas nao conseguimos retornar a imagem do banco com o componente TImagem. Alguem pode me dizer como faço para ler do banco para o TImagem???

Obs: Usando o LoadFromFile do componente funciona somente para ler de arquivos e não do banco de dados.

Grata

Ellen


Responder Citar

10/08/2004

Emerson

adapte essa rotina que foi retirada do arquivo de 800 dicas Delphi, que pode ser baixado em:
[url]http://200.241.52.8/meep/lloydsoft/download_file.php?id=1[/url]



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;


Responder Citar