BMP Bilder einlesen



  • Es gibt ja nun mehrere BMP Formate (RLE Codiert ?)



  • bei meinen tests, konnten zumindest folgende formate nicht vom Bitmap-Objekt geladen werden:

    Bitmaps mit 16Bit (444, 555, 565), einige mit 4Bit und RLE (8Bit dito), bestimmte Bitmaps im OS2-Format und einige mit 32Bit



  • So... auch gesendet.
    Und wenn du die enstprechenden Bilder versuchst zu laden. Kommt dann mein beschriebener Fehler oder können die Daten einfach nicht geladen werden?



  • sehr merkwürdig warum das bild nicht korrekt gelesen wird (dort wo eigentlicher das rote licht auf dem schnee sein sollte ist es grün). wenn ich das mit meiner eigenen bitmap-klasse lade, wird das korrekt angezeigt (ist eigentlich ein ganz normales 24bit windows-bitmap mit 40 byte header (Version 3 oder so)).

    ist wohl ein bug beim einlesen der tbitmap-klasse. bin die zwar grad mal im debug-modus durchlaufen, konnte da aber nix verdächtiges entdecken.



  • Aber kann man bei einem Image die Farbewerte umstellen?
    Weil wenn, dann wär das ja die einzige möglichkeit das Bild korrekt zu laden.



  • Also das Bild ist tatsächlich etwas putzig!

    - in TImage laden geht problemlos - aber die Farben sind vertauscht!
    Das ist wie eine Drehung im Farbkreis um 120°.
    - Wenn das Bild um 120° rotiert - im Farbkreis! - und gespeichert wird,
    passt danach alles.
    - Aber: IView zeigt mir dann anm, dass das Original 32 Bit Farbtiefe hatte.
    32 Bit BMPs kann aber TImage nicht richtig interpretieren.
    Zumindest bis BCB 4.0

    Tip: Versuch mal das Bild mit WinApPI zu laden und lies die Header aus.
    Das muss eins der neueren BMP- Formate sein.



  • Wie hast du den Farbkreis um 120° gedreht? Ich will nämlich das Bild nur als JPG abspechern.



  • RGBMaster schrieb:

    Wie hast du den Farbkreis um 120° gedreht? Ich will nämlich das Bild nur als JPG abspechern.

    Das ist ne längere Geschichte.

    1. Bild in Bitmap laden
    2. Bild in 24 Bit- Modus schalten, falls nötig
    3. Mit ScanLine alle Zeilen durchgehen und dabei:
    4. alle Pixel als RGB- Tripel ansprechen und die Farben drehen.
    deshalb sollte das Bitmap auch als 24 Bit Bild vorliegen.

    Das drehen mach ich sehr kompliziert: Farbe des Tripel in HLS wandeln, H- Wert
    "drehen" und zurückwandeln in RGB Werte.

    In Deinem Fall kannst Du die RGB- Werte direkt so vertauschen im Tripel.
    Ich hab nur nen fertigen Modul, der beliebig im Farbkreis dreht, drum nehm ich den.



  • Tja... das wird wohl ein bisschen zu schwierig für mich...

    Trotzdem Danke!



  • Ist doch nicht so schwer.
    sieh Dir mal das an:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-135410.html

    Da ist das mit den ScanLines angewandt. Musst nur das Wsserzeichen wegdenken.


Anmelden zum Antworten