Bild in MemoryStream speichern - Generischer GDI + -Fehler

Übersicht über meine Anwendung: Auf der Clientseite werden eine Reihe von Schnappschüssen mit einer Webcam aufgenommen. Beim Senden möchte ich, dass die Bilder in ein Bytearray konvertiert werden und dieses Bytearray an einen von mir geschriebenen Dienst gesendet wird.

Mein Problem: Ich versuche, ein einzelnes Bild auf einem zu speichernMemoryStream, aber es bricht weiter und spuckt die Nachricht aus,"In GDI + ist ein allgemeiner Fehler aufgetreten." Wenn ich tiefer grabe, sehe ich, dass die Ausnahme ausgelöst wird, wenn die Pufferposition des MemoryStreams bei 54 liegt. Leider ist es eine1.2 mb Foto. Hier ist der Codeblock:

// Create array of MemoryStreams
var imageStreams = new MemoryStream[SelectedImages.Count];
for (int i = 0; i < this.SelectedImages.Count; i++)
{   
    System.Drawing.Image image = BitmapFromSource(this.SelectedImages[i]);
    imageStreams[i] = new MemoryStream();
    image.Save(imageStreams[i], ImageFormat.Bmp); /* Error is thrown here! */
}

// Combine MemoryStreams into a single byte array (Threw this 
// in in case somebody has a better approach)
byte[] bytes = new byte[imageStreams.Sum(s => s.Length)];
for(int i = 0; i < imageStreams.Length; i++)
{
    bytes.Concat(imageStreams[i].ToArray());
}

Und hier ist meine BitmapFromSource-Methode

// Converts a BitmapSource object to a Bitmap object
private System.Drawing.Image BitmapFromSource(BitmapSource source)
{
    System.Drawing.Image bitmap;

    using (MemoryStream ms = new MemoryStream())
    {
        BitmapEncoder encoder = new BmpBitmapEncoder();
        encoder.Frames.Add(BitmapFrame.Create(source));
        encoder.Save(ms);
        bitmap = new System.Drawing.Bitmap(ms);
    }
    return bitmap;
}

Vieles, was ich über den generischen GDI + -Fehler gelesen habe, deutet auf ein Berechtigungsproblem hin, aber ich sehe nicht, wie dies hier zutreffen würde, da ich nicht im Dateisystem speichere. Ich habe auch gesehen, dass dieser Fehler auftreten kann, wenn der MemoryStream geschlossen wird, bevor das Bild gespeichert wird, aber ich sehe auch nicht, wie dies zutreffen würde, wenn ich den MemoryStream unmittelbar vor dem Speichern des Bildes erstelle. Jede Einsicht wäre sehr dankbar.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage