Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Delphi - Caricare files GIF in una TImage
Forum - Delphi - Caricare files GIF in una TImage

Avatar
bruno.demarini (Normal User)
Pro


Messaggi: 84
Iscritto: 22/03/2010

Segnala al moderatore
Postato alle 18:25
Domenica, 31/10/2010
Ciao a tutti, vorrei caricare all'interno di una TImage una immagine e lo faccio attraverso questa procedura:
Codice sorgente - presumibilmente Delphi

  1. procedure TForm1.Open1Click(Sender: TObject);
  2. begin
  3.   if OpenDialog1.Execute then
  4.     CurrentFile := OpenDialog1.FileName;
  5.   Image1.Picture.LoadFromFile(CurrentFile);
  6. end;


Il problema è che così riesco a leggere solo files bmp.
Dunque ho aggiunto la clausola uses:
Codice sorgente - presumibilmente Delphi

  1. uses Jpeg


Resta il problema con i files Gif, per cui ricevo il seguente errore:
"Unknown picture file extension (GIF)

C'è qualcuno che voglia aiutarmi? Grazie :)

PM
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 20:32
Lunedì, 01/11/2010
Ah cavolo hai ragione... Io ho Delphi 2010 e lì è implementato correttamente, ma già su delphi 7 non gira.
Ho provato allora con questo metodo, e sul 7 funziona:
aggiungi la unit axctrls e quindi usi questa procedura:
Codice sorgente - presumibilmente Delphi

  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3.   f : TFileStream;
  4.   graphic : TOleGraphic;
  5. begin
  6.   if OpenDialog1.Execute then
  7.   begin
  8.     graphic := TOleGraphic.Create;
  9.  
  10.     f := TFileStream.Create (OpenDialog1.FileName,
  11.                               fmOpenRead or fmShareDenyNone);
  12.     try
  13.       graphic.LoadFromStream(f);
  14.       Image1.Picture.Assign(graphic);
  15.     finally
  16.       f.Free
  17.     end
  18.   end
  19. end;


Funziona con OpenDialog tranquillamente. Non ho provato con OpenPictureDialog anche se dovrebbe funzionare lo stesso in quanto non dipende dal "dialogatore" :D
Comunque la TOleGraphic utilizza una dll microsoft, quindi questo metodo è utilizzato sotto windows.
Fammi sapere

PM
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 14:36
Lunedì, 01/11/2010
Mmmh... strano da me carica i file GIF, anche senza aggiungere la unit JPEG... Comunque io ho usato non l'OpenDialog, ma il PictureOpenDialog...
Prova con quello e fammi sapere...

PM
Avatar
bruno.demarini (Normal User)
Pro


Messaggi: 84
Iscritto: 22/03/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 15:04
Lunedì, 01/11/2010
Testo quotato

Postato originariamente da a_butta:

Mmmh... strano da me carica i file GIF, anche senza aggiungere la unit JPEG... Comunque io ho usato non l'OpenDialog, ma il PictureOpenDialog...
Prova con quello e fammi sapere...



Grazie per la risposta.
Ho fatto come mi hai detto usando i PictureDialog, ma ottengo lo stesso problema.
Difatti, nella proprietà filter dell'OpenPictureDialog ci sono diverse scelte (jpg, jpeg, bmp, ico, emf, wmf) ma non la scelta *.gif.
Dunque ho aggiunto questa scelta, ottenendo (prevedibilmente) comunque lo stesso errore...

PM
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 16:18
Lunedì, 01/11/2010
che versione di delphi usi?

PM
Avatar
bruno.demarini (Normal User)
Pro


Messaggi: 84
Iscritto: 22/03/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 16:23
Lunedì, 01/11/2010
Testo quotato

Postato originariamente da a_butta:

che versione di delphi usi?



Delphi 6 Professional.

PM
Avatar
bruno.demarini (Normal User)
Pro


Messaggi: 84
Iscritto: 22/03/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 12:40
Martedì, 02/11/2010
Testo quotato

Postato originariamente da a_butta:

Ah cavolo hai ragione... Io ho Delphi 2010 e lì è implementato correttamente, ma già su delphi 7 non gira.
Ho provato allora con questo metodo, e sul 7 funziona:
aggiungi la unit axctrls e quindi usi questa procedura:
Codice sorgente - presumibilmente Delphi

  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3.   f : TFileStream;
  4.   graphic : TOleGraphic;
  5. begin
  6.   if OpenDialog1.Execute then
  7.   begin
  8.     graphic := TOleGraphic.Create;
  9.  
  10.     f := TFileStream.Create (OpenDialog1.FileName,
  11.                               fmOpenRead or fmShareDenyNone);
  12.     try
  13.       graphic.LoadFromStream(f);
  14.       Image1.Picture.Assign(graphic);
  15.     finally
  16.       f.Free
  17.     end
  18.   end
  19. end;


Funziona con OpenDialog tranquillamente. Non ho provato con OpenPictureDialog anche se dovrebbe funzionare lo stesso in quanto non dipende dal "dialogatore" :D
Comunque la TOleGraphic utilizza una dll microsoft, quindi questo metodo è utilizzato sotto windows.
Fammi sapere



Ho provato il tuo codice prima con l'OpenPictureDialog e poi con l'OpenDialog. Il primo tentativo è fallito, stesso errore; con l'OpenDialog invece funziona perfettamente. Per cercare di capire il perché ho eseguito il debug e sembra proprio dipendere dal "dialogatore" Picture (l'errore avviene non appena seleziono l'immagine GIF da caricare).
Grazie mille per l'aiuto, ciao :) :k:

PM
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 13:49
Martedì, 02/11/2010
a ok perfetto! Questo non lo sapevo!
Ciaociao!!:D

PM