![]() |
[GR32] EInvalidGraphic "Bitmap ist ungültig", waru
Hallo zusammen,
ich lese ein JPEG-Bild aus einer Datei ein und möchte es mittels TImageView32 aus der Graphics32-Bibliothek anzeigen (und später mal weiter bearbeiten). Das Einlesen funktioniert problemlos nur das Zuweisen klappt nicht. Für das Zuweisen nutze ich folgenden Code:
Delphi-Quellcode:
Ergänze ich folgende Zeile (nach dem 'seek')
jp := TMemoryStream.Create;
fs.Seek(ANodeData.JPEGOffset, soFromBeginning); jp.CopyFrom(fs, ANodeData.JPEGLength); jp.Seek(0, soFromBeginning); imgSource.Bitmap.LoadFromStream(jp); //<-- hier erscheint der Fehler EInvalidGraphic 'Bitmap ist ungültig'
Delphi-Quellcode:
und lade das Bild dann so:
jp.SaveToFile('test1.jpg');
Delphi-Quellcode:
wird die letzte Zeile problemlos abgearbeitet und das Bild korrekt angezeigt.
imgSource.Bitmap.LoadFromFile('Test.jpg');
Was mach' ich falsch ? :cry: |
Re: [GR32] EInvalidGraphic "Bitmap ist ungültig",
Du lädst eine Jpeg-Datei in ein Bitmap ?
Klar dass das dann kracht. Wandele erst das Jpeg in ein Bitmap, wie das geht solltest du im Forum finden können. |
Re: [GR32] EInvalidGraphic "Bitmap ist ungültig",
Ok, hab es selbst gefunden:
In den Streamroutinen von TBitmap32 wird ein TBitmap-Objekt genutzt, während in den Fileroutinen ein TPicture-Objekt genutzt wird. Da das TBitmap auch eine Bitmap und nicht ein JPEG erwartet kam es wohl zu dem Fehler. Dumm nur das in der Doku von TPicture gesprochen wird :wall: Ich hab' nun noch ein Jpeg hinzugefügt und dies dann an das ImageView32 übergeben:
Delphi-Quellcode:
fs.Seek(ANodeData.JPEGOffset, soFromBeginning); // Daten aus Datei lesen
ms := TMemoryStream.Create; // Memorystream erzeugen ms.CopyFrom(fs, ANodeData.JPEGLength); // Mit den Daten aus der Datei füllen ms.Seek(0, soFromBeginning); // Zeiger auf erste Position zurücksetzen jp := TJPEGImage.Create; // JPEG erzeugen jp.LoadFromStream(ms); // Mit Daten aus Stream füllen imgSource.Bitmap.Assign(jp); // an ImageView32 übergeben |
Re: [GR32] EInvalidGraphic "Bitmap ist ungültig",
@turboPASCAL: Das direkte Laden des jpg als Datei funzte ja, nur nicht das Laden aus dem Stream (s.o.)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz