000
29.04.2005, 20:25
hausi
|
Ich habe beschlossen mich ein bisschen in das .NET-Framework einzuarbeiten und habe deshalb mit einem Konverter für ein File-Format begonnen. Ich lese im Moment per FileStream eine Anzahl von signed int16-Werten ein, die ich dann überarbeiten und in einem Bitmap speichern will... Nur das Problem ist im Moment das Konvertieren von byte[] nach Int16. Ich habe im Moment folgenden Code (der ohne Probleme geht):
inputFileStream.Seek( 0, System.IO.SeekOrigin.Begin ); byte[] buffer = new byte[imageWidth * 2];
for( int y = 0; y < imageHeight; y++ ) { inputFileStream.Read( buffer, 0, imageWidth * 2 ); for( int x = 0; x < imageWidth; x++ ) { int colorValue = buffer[ x * 2 ]; if( (buffer[ x * 2 + 1 ] & 0x80) == 0x80 ) { colorValue = Int16.MinValue + colorValue + (buffer[ x * 2 + 1 ] & 0x7F) * 255; } else { colorValue = colorValue + buffer[ x * 2 + 1 ] * 255; } if( colorValue < 0 ) { bmp.SetPixel( x, y, Color.Blue ); } else { colorValue = (int)(Math.Round( Math.Sqrt( colorValue ) )); bmp.SetPixel( x, y, Color.FromArgb( colorValue, colorValue, colorValue ) ); } } }
Das Problem an diesem Code ist halt einfach, dass es für die Konvertierung sicher eine elegantere Lösung als diese gibt und ich nichts gescheites im Netz finden konnte (ist auch relativ schwer danach zu suchen)... Kann mir jemand sagen, wie ich das einfacher machen kann?
[Edit] Ja, ich weiss dass man diese beiden if-Abfragen auch einfach in eine optimieren könnte, aber 1. ist die zweite if-Abfrage noch nicht richtig und 2. bin ich ja am üben :) [/Edit]
--
Dieser Beitrag wurde am 29.04.2005 um 21:23 von Superhausi bearbeitet.
|
|
Profil || Suche
|