 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 04.10.2013, 17:26 Titel: BMP format byteweise auslesen? |
|
|
Hallo Leute,
ich habe hier 2 BMP dateien, welche im greymode gespeichert sind.
die eine ist eine heightmap die andrere eine depthmap, ergo die
eine geht in die hoehe die andere in die tiefe.
(landmassen, ozeane)
nun mochte ich diese byteweise zusammefuehren.
dabei entsteht aber eine datei die ca 4x groesser ist als
das ausgangsmaterial.
und genau das ist es was ich nicht verstehe, beide dateien
benoetigen 233MB das ergebnis ist ca 930 mb gross,
was ja aber nicht sein kann.
also hab ich mal nen hexviewer angeschmissen und gegugt, dabei
fiehl mir auf das anscheinend jeder kanal jeweils 4 byte
verbrauchen.
nun meine frage is das normal und wie kann ich beide dateien
moeglichst effizient zusammefuehren?
das ergebniss soll im gruen kanal die hoehen, und im blau kanal
die tiefen beinhalten. der rot kanal steht immer auf 255 um
sozusagen die nullstelle zu markieren.
mein vorgehen ziehlt auf eine 3d ansicht hinaus aber dafur mochte
ich den datenaufwand von 2 heighmaps minimieren in dem
ich 2 heighmaps zusammenfuehre.
ich hoffe das ihr versteht was ich meine und das mir irgend wer
helfen kann.
Salute |
|
Nach oben |
|
 |
RockTheSchock
Anmeldungsdatum: 04.04.2007 Beiträge: 138
|
Verfasst am: 04.10.2013, 20:10 Titel: |
|
|
Zitat: | ich den datenaufwand von 2 heighmaps minimieren in dem
ich 2 heighmaps zusammenfuehre. |
Warum genau willst du die Dateien zusammenführen? Hat das was mit der Bearbeitung zu tun?
Wenn du 2 BMPs 8-bit Graustufen zu einer 24 bit Bitmap zusammenführst , dann sollten deine Daten ein Drittel größer also ~350MB sein.
Am besten du zeigst uns mal deine Prozedur mit der du die Daten schreibst. Ich hab hier mal etwas Pseudocode für Dich. Ist zwar nicht lauffähig zeigt aber vielleicht ein paar Ansätze. Den Aufbau einer Bitmap müsstest du du noch in die Type Blöcke Kopf und Info übernhemen
http://de.wikipedia.org/wiki/Windows_Bitmap
Code: |
Type BMPKopf Field = 1
'...
End Type
Type BMPInfo Field = 1
'...
End Type
Type BMPPixel24 Field = 1
rot as UByte
gruen as UByte
blau as UByte
End Type
Type Bitmap
h as Integer 'filehandle
kopf as BMPKopf
info as BMPInfo
End Type
Dim as Bitmap fheight,fdepth,fcombi
Dim fheight.h AS Integer = Freefile
Dim fdepth.h AS Integer = Freefile
Dim fcombi.h AS Integer = Freefile
Open "hmap.bmp" For Binary As #fheight.h
Open "dmap.bmp" For Binary As #fdepth.h
Open "newmap.bmp" For Binary As #fcombi.h
Get #fheight.h,#fheight.kopf
Get #fheight.h,#fheight.info
Get #fdepth.h,#fdepth.kopf
Get #fdepth.h,#fdepth.info
'... Kopf und Info daten erst füllen
'kopf.x = blablub
'kopf.x = blablub
'usw.
Put #fcombi, , fcombi.kopf
Put #fcombi, , fcombi.info
Dim bilddatenmenge as Integer = fheight.info.biWidth*fheight.info*fheight.info.biHeight*fheight.info.biBitCount/8
Dim pixel as BMPPixel24
For i as Integer = 0 to bilddatenmenge -1
get #fheight.h, , pixel.gruen
get #fdepth.h, , pixel.blau
pixel.rot=255
put #fcombi.h,,pixel
next
close #fheight.h
close #fdepth.h
close #fcombi.h
|
|
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 04.10.2013, 20:23 Titel: |
|
|
Aus meiner berühmten Sammlung, wenn es um den direkten Umgang mit dem Dateiformat geht:
http://www.dreael.ch/Deutsch/Download/WindowsBitmapBibliothek.html
In FreeBasic kannst Du möglicherweise mit BLOAD, BSAVE, IMAGECREATE, GET und PUT Dein Ziel wesentlich eleganter erreichen, in dem Du Deine Quellbilder in Grafikkontexte lädst, in einem Ziel-Grafikkontext alles mit PUT so zusammenbaust, wie Du es brauchst und dann den Zielkontext mit BSAVE wieder abspeicherst.
Am besten genaue Operation anhand eines Beispiels beschreiben -> Evtl. mit Windows Paint kleine Beispiele erstellen. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|