Fragen zum Bitmapformat



  • Ich will 24Bit Bitmaps laden die ich mit Paint gespeichert habe. Alles von Hand ohne WinAPI ect. nur mit fread() ect.

    Ich habe mir das so gedacht.

    24Bit = 8Bit rot 8Bit Grün 8Bit Blau 8Bit nichts

    oder wie ist das Format aufgebaut? Kann ich nicht einfach drei Bytes einlesen (r,g,b) und zu einem Frabwert zusammenrechnen und in einem Array speicher? Danch die nächsten drei oder muss ich immer ein Byte überspringen?



  • Zuerst kommen die Headers der Datei:

    BITMAPFILEHEADER bitmap_header; //Bitmap-Header
    BITMAPINFOHEADER bitmap_info;   //Bitmap-Info
    

    mit ihren jeweiligen Größen (sizeof(...)).
    Daraus kannst du ablesen, wie groß das Bild ist und noch vieles mehr.
    Bei einem Bild, welches mit Paint gespeichert wurde, sollten keine Besonderheiten auftreten 😉 . Danach kannst du einfach die Farbwerte einlesen (je ein Byte für R/G/B). Am Ende jeder Bildzeile musst du dann noch ein Falsch-Byte einlesen, sonst passt das Bild am Ende nicht - und das war s auch schon 🙂

    M.T.



  • Ok ich lade jetzt die Bitmap in eine DirectDraw Oberfläche. Funktioniert auch.

    Nun habe ich ein anderes Problem. Ich speichere die Bitmap wieder, diesmal ohne das eine falsche Byte. Den Header ect. habe ich auch verkleinert. Trotzdem ist die Datei genauso groß wie das Orginal 😕



  • Du hast das Falsch-Byte weggelassen? Das muss dort aber als Abschluss der Zeile stehen. Genauso der Header - wie soll man sonst aus der bmp-Datei die Maße ablesen?
    Der Größenunterschied wird auch nicht so spürbar sein, da die Bilddaten sowieso den Löwenanteil ausmachen.

    M.T.



  • wie kann man eigentlich bilder komprimieren, ich meine die daten bleiben ja die gleichen ...



  • Nicht ganz. JPG z.B. fasst die Bilddaten m.H. komplexer Formeln zusammen, woraus ein Qualitätsverlust resultiert (d.h. Änderung der Bilddaten). PNG fasst die Daten so zusammen, dass z.B. Schwarz von 10,10 nach 500,10 ... natürlich viel komplexer 😉 . So bleiben bei PNG die Bilddaten fast die selben ...

    M.T.



  • Original erstellt von Manuel:
    **Nicht ganz. JPG z.B. fasst die Bilddaten m.H. komplexer Formeln zusammen,
    **

    genaugenommen es macht eine "Diskrete Cosinus-Transformation" 😃

    **
    woraus ein Qualitätsverlust resultiert (d.h. Änderung der Bilddaten). PNG fasst die Daten so zusammen, dass z.B. Schwarz von 10,10 nach 500,10 ... natürlich viel komplexer 😉 . So bleiben bei PNG die Bilddaten fast die selben ...
    **

    korrektur des letzen satzes:
    "So bleiben bei PNG die Bilddaten genau die selben ..."
    mfg japro


Anmelden zum Antworten