Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Fehlerhafte BMP nach Apspeichern (https://www.delphipraxis.net/187326-fehlerhafte-bmp-nach-apspeichern.html)

bernhard_LA 19. Nov 2015 16:26

Fehlerhafte BMP nach Apspeichern
 
Liste der Anhänge anzeigen (Anzahl: 2)
ich schreibe Bitmaps mit diesem code auf meine Festplatte

Delphi-Quellcode:
     
      aTempImage := TBitMap.Create;
      aTempImage.Assign(aTImage.Picture.Bitmap);
      aTempImage.SaveToFile(BMPFilename);
      aTempImage.Free;


ein paar Funktionen später will ich diese Bilder (bmps) wieder einlesen


Delphi-Quellcode:
       
        r2v_bmp := TBitMap.Create;
        r2v_bmp.PixelFormat := pf24bit;


        r2v_bmp.LoadFromFile(anewFilename);
        /// nochmal abspeichern auf der fehlersuche ....
´       r2v_bmp.savetoFile('c:\temp\r2v_t2.bmp');




Die Datei r2v_t2.bmp kann ich jetzt mit den Windows viewern (Paint, Windows Photo Viewer) nicht mehr öffnen / anzeigen.
IrfanView kann diese Datei problemlos öffnen.
Was könnte der Fehler sein?

Mavarik 19. Nov 2015 16:34

AW: Fehlerhafte BMP nach Apspeichern
 
PNG oder BMP?

Dein angehängtes Bild sagt png

SMO 19. Nov 2015 17:12

AW: Fehlerhafte BMP nach Apspeichern
 
Einfach mal die erzeugte Datei in einem Hexeditor anschauen, dann sieht man ob sie einen BMP oder PNG Kopf hat.

Delphi-Quellcode:
      r2v_bmp.PixelFormat := pf24bit;

      r2v_bmp.LoadFromFile(anewFilename);
Die Zuweisung an PixelFormat ist hier übrigens sinnlos, es sei denn du machst mit r2v_bmp noch etwas vor LoadFromFile, denn LoadFromFile setzt PixelFormat natürlich auf den Wert der in der Datei steht.

bernhard_LA 19. Nov 2015 21:42

AW: Fehlerhafte BMP nach Apspeichern
 
Liste der Anhänge anzeigen (Anzahl: 1)
das 4. und 11. Zeichen ist zwischen original Datei und der fehlerhaft abgespeicherten Datei unterschiedlich, was ist das für ein Fehler ?

mensch72 19. Nov 2015 23:03

AW: Fehlerhafte BMP nach Apspeichern
 
https://msdn.microsoft.com/de-de/lib...(v=vs.85).aspx

der erste Unterschied liegt im DWORD für die Anzahl der "Bitmapdaten" und der 2. Unterschied liegt im DWORD für den Anfang der "Bitmapdaten"...

In einer Datei scheint noch ein Array für eine "Farbpalette" mit drin zu sein... das ist der Unterschied... denn so kann man wie "früher" per API Bitmaps auch selbst speichern&lesen.

BITMAPFILEHEADER + BITMAPINFO(Header) + Bitmapdaten in an DWORD Grenzen beginnenden Zeilen :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz