Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

BMP format byteweise auslesen?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Haubitze



Anmeldungsdatum: 14.10.2009
Beiträge: 132

BeitragVerfasst am: 04.10.2013, 17:26    Titel: BMP format byteweise auslesen? Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
RockTheSchock



Anmeldungsdatum: 04.04.2007
Beiträge: 138

BeitragVerfasst am: 04.10.2013, 20:10    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 04.10.2013, 20:23    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz