BMP-Aufbau

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

BMP-Aufbau

Beitrag von KeyKon »

Wie ist eigentlich eine BMP aufgebaut?
Hat vielleicht irgenjemand schonmal was zum Hand-Auslesen geschrieben?
Oder hat irgendjemand einen Link zu einer Seite wo das beschrieben wird?

KeyKon
(\/) (°,,,°) (\/)
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

Hier: http://www.runicsoft.com/bmp.php#chapter3

Und hier: http://www.fastgraph.com/help/bmp_header_format.html

Einen Loader hab ich dafür auch, allerdings nur in C++.
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

bei formatfragen lohnt sich auch immer mal ein blick auf www.wotsit.org
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

thx :allright:
(\/) (°,,,°) (\/)
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Ich hab jetzt mal einen kleinen Loader geschrieben:

Code: Alles auswählen

If OpenFile(0,OpenFileRequester("Öffnen","","BMP|*.bmp|All|*.*",0)) = 0
  Debug "Konnte nich öffnen!"
  End
EndIf

If ReadWord() <> 19778  ;"BM"
  Debug "Kein BMP File!"
  End
EndIf
  
Debug "Size: "+Str(ReadLong())+" Byte"

If ReadWord() <> 0 Or ReadWord() <> 0
  Debug "Error! bfReserved isn't 0"
  End
EndIf

Debug "Size of Headers: "+Str(ReadLong())+" Bytes"  ;  54
Debug "Size of the Structure: "+Str(ReadLong())+" Bytes"  ;  40

XSize = ReadLong()
YSize = ReadLong()
Debug "Image Width: "+Str(XSize)+" Pixels"
Debug "Image Height: "+Str(YSize)+" Pixels"


Debug "BitPlanes: "+Str(ReadWord())
Debug "Resolution: "+Str(ReadWord())
Debug "Compression: "+Str(ReadLong())
Debug "Size of Image: "+Str(ReadLong())
Debug "Pixels per Meter X: "+Str(ReadLong())
Debug "Pixels per Meter Y: "+Str(ReadLong())
Debug "Colors Used: "+Str(ReadLong())
Debug "Important Colors: "+Str(ReadLong())


CreateImage(0,XSize,YSize)

; Structure prgb
;   re.b
;   gr.b
;   bl.b
; EndStructure

; Dim Pic.prgb(XSize-1,YSize-1)

StartDrawing(ImageOutput())

For y = 0 To YSize-1
  For x = 0 To XSize-1
    Blue = ReadByte()&$FF
    Green = ReadByte()&$FF
    Red = ReadByte()&$FF
    
    Plot(x,YSize-y-1,RGB(Red,Green,Blue))
    
;     Pic(x,YSize-y-1)\re = Red-128
;     Pic(x,YSize-y-1)\gr = Green-128
;     Pic(x,YSize-y-1)\bl = Blue-128
    
;     Debug Red
;     Debug Green
;     Debug Blue
  Next
Next
    
StopDrawing()
    
If SaveImage(0,"Test.bmp") = 0
  Debug "Fehler beim speichern!"
  End
EndIf



Debug "Fertig"
Is bestimmt nich die schnellste möglichkeit, aber es funktioniert!

KeyKon
Zuletzt geändert von KeyKon am 22.12.2005 02:07, insgesamt 1-mal geändert.
(\/) (°,,,°) (\/)
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

> es funktioniert!
Bei mir zumindest nicht ganz. Ich habe keine Ahnung wie dein Prozessor
das sieht aber meiner würde bei [c]Blue+256 [/c] am liebsten aus dem Sockel
springen und sich aus dem Fenster werfen.

Die IFs bitte komplett weg löschen und dafür die Bytes sofort so einlesen:

Code: Alles auswählen

    Blue  = ReadByte()&$FF
    Green = ReadByte()&$FF
    Red   = ReadByte()&$FF
Im übrigen: Danke für den Code :allright:.
Bild
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

thx, is edited

KeyKon
(\/) (°,,,°) (\/)
Antworten