2009-06-12 8 views
1

Ich habe eine Reihe von Pixeldaten, die ich als JPEG-Datei speichern muss. Von dem, was ich gefunden habe, ich kann dies tun, indemushort array zu Bildobjekt

Image.Save(path, ImageFormat.Jpeg); 

verwenden, aber ich weiß nicht, wie die ushort Daten in das Image-Objekt zu erhalten. Ich habe Wege gefunden, dies mit Byte-Arrays zu tun, aber nicht ushort. Ich habe viel zu viel Zeit damit verbracht es herauszufinden, also frage ich den mächtigen StackOverflow, wie mache ich das?

Bearbeiten: Sorry, die ushorts sind 16-Bit-Graustufenwerte.

+0

Es ist nicht klar, warum Ihre Daten in Ushort sind (0-256 oder 16-Bit Farbtiefe). Ich werde auf BitConverter verweisen, da dies Ihre Antwort enthalten kann (oder auch nicht). – Talljoe

+0

"Array von Pixeldaten" bedeutet nichts allein. Was ist das Datenformat des Arrays? –

Antwort

2

Ich denke, Sie müssen tatsächlich erstellen Bitmap, zeichnen Sie die Pixel darauf und speichern Sie es anschließend.

Etwas wie folgt aus:

var bitmap = new Bitmap(sizeX, sizeY, Imaging.PixelFormat.Format16bppGrayScale) 

for (y = 0; ...) 
for (x = 0; ...) 
{ 
    bitmap.SetPixel(x, y, color information from ushort array); 
} 

bitmap.Save("filename.jpg", ImageFormat.Jpeg); 

Bitte beachte, dass ich weiß nicht, wie ein Graustufen-Farbinformation 16 Bit in die Farbe-Struktur zu erhalten.

+0

Ich stimme zu, wenn Sie rohe Pixeldaten (in welchem ​​Format auch immer) erhalten, ist es am einfachsten, ein Bitmap Pixel für Pixel zu erstellen. – TheSean

+0

Das ist großartig, aber beantwortet nicht die Frage, wie man _ushort_ Daten in die Bitmap bekommt. –

+0

Dies ist, was ich getan habe, und scheint gut zu funktionieren. Aber nur damit Sie wissen, dass jpeg keine 16-Bit-Graustufen unterstützt, verwende ich PixelFormat.Format24bppRgb und setze r, g und b auf den gleichen Wert. –

1

Ich glaube, dass Sie die Bitmap-Klasse verwenden möchten, die von Image erbt. This MSDN Referenz kann helfen.

+0

Das sagt mir nicht, wie die Ushort-Daten in das Bitmap-Objekt gelangen. –

+0

Ich nahm an, dass die Bitmap.SetPixel() offensichtlich war. –

+0

Auch dies sagt mir nicht, wie man die Ushort-Daten in das Bitmap-Objekt bringt. SetPixels benötigt ein Color-Objekt und keinen ushort-Wert. Wie meine Fragen sagen, weiß ich, wie man ein Bild erstellt (Bitmap wird von Image abgeleitet), nur nicht mit ushort Daten. –

Verwandte Themen