Inputstream Bit einzeln auslesen und weiterverarbeiten

Boneman

Grünschnabel
Hallo,

ich arbeite mit VC .net

Ich habe eine Rohbilddatei mit 10Bit pro Pixel, ich möchte die 10Bit auslesen in 8Bit umwandeln. :confused:
Über einen Outputstream wird das dann in eine Datei geschrieben(den Imageheader vernachlässige ich erstmal).

Hier habe ich den Quelltext wo ich statt Bit Char verarbeite, da ich nix kleineres kenne
Code:
	// Input
	string filename = "Datafield.raw";
	ifstream input;
	input.open(filename.c_str(), ios_base::in | ios_base::binary);
	if(!input){
		cout << "Die Datei konnte nicht zum Lesen geoeffnet werden!" << endl;
	}
	// Output
	string formatdata = "formatdata.raw";
	ofstream output;
	output.open(formatdata.c_str(), ios_base::out | ios_base::app | ios_base::binary);
	if(!output){
		cout << " Die Datei konnte nicht zum schreiben geoeffnet werden" <<endl;
		
	}
	
	char zeichen;
	while(!input.eof())
	{
	
        for(int i = 0; i < 8; i++)
            {
		input.get(zeichen);
                output.put(zeichen);
	    }
        // Hier werden Bit 9 und 10 einfach nicht mit in den Outputstream aufgenommen
	for(int j = 0; j < 2; j++)
            {
		input.get(zeichen);
            }
	}

Mein Problem ist das ich nicht weiss wie ich die Bits einzeln auslese.

Danke
 
Mir würde auch schon reichen wenn man mir weiterhilft wie ich aus den Rohdaten ein TIFF Bild mit 10Bit pro Pixel mach, weil ich absolut keine Ahnung habe wie das funktioniert.
 
Wie sind die Daten denn in Deiner Rohbilddatei abgespeichert? Immer 10 Bit hintereinander (Pixel 1: Bit0-9, Pixel 2: Bit 10-19, ...) oder auf 8-Bit-Grenzen (Pixel 1: Bit0-9, Pixel 2: Bit 16-23, ...)
 
Zurück