noch einen Nachtrag..
Zitat:
Das Problem mit deiner Funktion ist einfach, dass du das Bild als Windows-Bitmap speicherst, aber beim laden davon ausgehst, dass in der Datei die Rohdaten der Quell-Streams stehen. Tun sie aber nicht, da das Bitmap-Format zum einen einen eigenen Header (Meta-Daten vor den eigentlichen Bilddaten) in die Datei bringt, und zudem der Standard nicht alle Pixelformate vorsieht, die ein DX Surface haben könnte, weshalb da im schlimmsten Fall sogar noch konvertiert wird. Der Dateiinhalt hat nachher also potenziell kaum noch etwas mit den ursprünglichen Rohdaten im Surface-Buffer gemein.
Das Problem ist eher ein anderes..
Die Farben die nun ermittelt werden muss ich quasi als Quader auf ein Bitmap zeichnen
diese wird dann gestaucht auf eine Größe von 64x48 und anschließend als Bitmap nach AtmoWin geschickt.
Als Bitmap deswegen weil die den Header erwarten!
Code:
BinaryReader reader = new BinaryReader(stream);
stream.Position = 0; // ensure that what start at the beginning of the stream.
reader.ReadBytes(14); // skip bitmap file info header
byte[] bmiInfoHeader = reader.ReadBytes(4 + 4 + 4 + 2 + 2 + 4 + 4 + 4 + 4 + 4 + 4);
byte[] pixelData = reader.ReadBytes((int)(stream.Length - stream.Position));
atmoLiveViewCtrl.setPixelData(bmiInfoHeader, pixelData);
Ich war vorher davon ausgegangen das Ursprungs Bild zu verkleinern aber das wäre ja quatsch gewesen deshalb war meine Annahme diese vorher auf die Platte zu schreiben schlichtweg falsch.
Nur die Farbfragmente sind wichtig.
Aber ob ich das Bild dann auch auf die Platte speichern muss wird sich erst noch zeigen.
gruss