BMP Bilder einlesen
-
Wenn du meinst....
Definitiv liegen im BMP Format die Farben
Farbwerte BLUE,GREEN,RED,RESERVED = 4 Bytes je Farbe
vor
-
Definitiv liegen im BMP Format die Farben
Farbwerte BLUE,GREEN,RED,RESERVED = 4 Bytes je Farbe
vor. Das kann TImage auch laden.
-
Hm... da haste wohl recht... obwohl ich mit allen programmen das problemlos laden kann...
1. Is daran irgenetwas falsch??
Image1->Picture->LoadFromFile("C:\\pic1.bmp");mag sein das ich schon da irgendeinen dummen fehler gemacht habe

2. Wenn dies nicht der fall ist, wie stell ich die Farbwerte um? (Eine kleine Starthilfe genügt meißtens :))
Vielen Dank
-
Nein, das ist ok
Mache doch folgenden Test:
Nimm ein BMP aus dem Windowsverzeichnis. Wird das korrekt angezeigt?
Du hast auch vorher keine Einstellungen bezüglich der Palette (Farbe) vorgenommen?
-
Also ich hab jetzt ne Datei aus meinen Eigenen Dateien geladen und das klappt wunderbar...

ich hab jetzt einfach ma ein bild in paint geladen (was dort auch wunderschön angezeigt wird) und einfach ma gespeichert. Das Bild wird jetzt in meinem Programm wunderbar angezeigt!
Hm... es muss da echt was mit den Einstellungen der Bilder auf sich haben...
-
Kannst Du mir das Bild mailen?
Dann schau ich mal rein.
-
Hab dir das Bild gesendet
-
mir mal bitte auch.

-
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.0Tip: 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.htmlDa ist das mit den ScanLines angewandt. Musst nur das Wsserzeichen wegdenken.