Italian community of Lazarus and Free Pascal

Programmazione => Graphics => Topic aperto da: Eugenio Belli - Giugno 26, 2020, 10:54:24 am

Titolo: Wrong image format --->jpeg
Inserito da: Eugenio Belli - Giugno 26, 2020, 10:54:24 am
Sto valutando se fare il porting di una vecchia applicazione D7 CLX
a causa di problemi nel caricare immagini jpg bmp png in una picture.

Il codice questo:
procedure TForm1.EditButton1ButtonClick(Sender: TObject);
begin
   if opendialog1.execute then begin
      editbutton1.Text:=opendialog1.Filename;

      if (editbutton1.text)<>'' then begin
         Image1.picture.Bitmap.LoadFromFile(string(editbutton1.text));
      end;
   end;
end;   

l'errore questo:
il progetto project1 ha sollevato una eccezzione di classe 'FPImageException'
con messaggio: Wrong image format.

funziona solo con immagini bmp ma solleva eccezioni con jpg e png

con Delphi7 CLX ho aggiunto al progetto Unit PngImage.pas e la Jpeg.pas
e ora mi carica e posso stampare immagini Png ma non riesco con le Jpeg e le Bmp

potrei rinunciare agli altri due formati ma il Jpg mi indispensabile
e stavo pensando di fare un porting su Lazarus.
(scusate non riesco ad usare il bottone # dell'editor...non fa nulla)
Titolo: Re:Wrong image format --->jpeg
Inserito da: xinyiman - Giugno 26, 2020, 12:25:01 pm
Il problema che devi fare un distingo. Con la funzione ExtractFileExt() riesci a capire se si tratta di un bitmap o di una jpeg. In funzione di quello cambi leggermente il codice.

Per le bitmpa usi

 Image1.picture.Bitmap.LoadFromFile(string(editbutton1.text));

per le jpeg usi

 Image1.picture.Jpeg.LoadFromFile(string(editbutton1.text));

per le png usi

 Image1.picture.png.LoadFromFile(string(editbutton1.text));

Ti consiglio di dare un occhiata qui: https://lazarus-ccr.sourceforge.io/docs/lcl/graphics/tpicture.html
Titolo: Re:Wrong image format --->jpeg
Inserito da: Eugenio Belli - Giugno 26, 2020, 03:16:39 pm
Grazie, ho appena riprovato con Lazarus senza installare nessuna unit
e funziona con tutti e tre i formati : bmp jpeg e png
:-)