Fehler beim TImage.Graphic aus Memorystream Laden

Rund um die LCL und andere Komponenten
Antworten
Soner
Beiträge: 624
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Fehler beim TImage.Graphic aus Memorystream Laden

Beitrag von Soner »

Hallo,
ich versuche aus einem MEmorystream ein Bild in TImage.Picture zu laden. Egal was ich mache funktioniert es nicht. Das Bild in Stream richtig, ich speichere es, und man kann es als Datei öffnen.

Weiss jemand wo ich hier ein Fehler mache?

Das ist die Funktion:

Code: Alles auswählen

procedure TForm1.BtnToStreamClick(Sender: TObject);
var ms: TMemoryStream;
begin
  ms:= TMemoryStream.Create;
  //try
    QRCode.SaveToStream(ms, TJPEGImage); //TPortableNetworkGraphic
   try
    Image1.Picture.LoadFromStreamWithFileExt(ms,'jpg');
    //Image1.Picture.LoadFromStreamWithFileExt(ms, 'png');
    Image1.Picture.SaveToFile('ms1.jpg');  //das ist leer
    ms.SaveToFile('ms.jpg');               //das ist okay, mann kann dieses Bild beim Formdesigner in Image1 laden.

   except
    on E: Exception do ShowMessage(E.Message);
   end;
  //finally
    ms.Free;
  //end;
end;
Es ist aus Lazbarcodes-Package das Beispielprogramm qrcodegenerator.

Benutzeravatar
theo
Beiträge: 10500
Registriert: Mo 11. Sep 2006, 19:01

Re: Fehler beim TImage.Graphic aus Memorystream Laden

Beitrag von theo »

Soner hat geschrieben:
Fr 20. Okt 2023, 16:33
QRCode.SaveToStream(ms, TJPEGImage); //TPortableNetworkGraphic
Das ist schon mal mindestens merkwürdig. Du möchtest ein TJPEGImage speichern und kommentierst das als TPortableNetworkGraphic?

Ansonsten würde ich mal versuchen, die Position des MemoryStreams auf 0 zu setzen vor jedem Schritt.

Soner
Beiträge: 624
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Fehler beim TImage.Graphic aus Memorystream Laden

Beitrag von Soner »

theo hat geschrieben:
Fr 20. Okt 2023, 16:47
Soner hat geschrieben:
Fr 20. Okt 2023, 16:33
QRCode.SaveToStream(ms, TJPEGImage); //TPortableNetworkGraphic
Das ist schon mal mindestens merkwürdig. Du möchtest ein TJPEGImage speichern und kommentierst das als TPortableNetworkGraphic?

Ansonsten würde ich mal versuche, die Position des MemoryStreams auf 0 zu setzen vor jedem Schritt.
Es war vorher PNG-Format, deshalb habe ich es in den Kommentarbereich vorschoben, weil ich es wieder verwenden will, 'bin Tippfaul.

Das mit dem Position 0 war richtig, es funktioniert. Und das Schlimme, ich habe es daran selbst gedacht aber danach "neee daran kann es nicht liegen, mit dem Speichern klappt es ja." gesagt. Anderthalb Stunden unnötig herum probiert.

Danke dir.

Benutzeravatar
theo
Beiträge: 10500
Registriert: Mo 11. Sep 2006, 19:01

Re: Fehler beim TImage.Graphic aus Memorystream Laden

Beitrag von theo »

Soner hat geschrieben:
Fr 20. Okt 2023, 17:02
Es war vorher PNG-Format, deshalb habe ich es in den Kommentarbereich vorschoben, weil ich es wieder verwenden will, 'bin Tippfaul.
Das mache ich auch beim coden, aber bevor ich's ins Forum stelle, lösche ich so etwas raus, weil es mir nichts bringt, die Leute auf eine falsche Fährte zu schicken. :wink:

Antworten