2017-08-31 4 views
-2

Ich versuche, einen Screenshot zu erstellen und es von C# zu PHP zu senden, wo ich es speicher.Wie kann ich ein Bild als Stream speichern?

erstelle ich einen Screenshot wie folgt aus:

Bitmap screenshot = TakeScreenshot(); 

Jetzt versuche ich zu save it as a stream:

Stream myStream; 
screenshot.Save(myStream, System.Drawing.Imaging.ImageFormat.Gif); 

Allerdings bekomme ich Use of unassigned local variable 'myStream'.

Was mache ich falsch?


Funktionen:

private Bitmap TakeScreenshot() 
{ 
    //Create a new bitmap. 
    var bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, 
            Screen.PrimaryScreen.Bounds.Height, 
            System.Drawing.Imaging.PixelFormat.Format32bppArgb); 

    // Create a graphics object from the bitmap. 
    using (var gfxScreenshot = Graphics.FromImage(bmpScreenshot)) 
    {  
     // Take the screenshot from the upper left corner to the right bottom corner. 
     gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, 
           Screen.PrimaryScreen.Bounds.Y, 
           0, 
           0, 
           Screen.PrimaryScreen.Bounds.Size, 
           CopyPixelOperation.SourceCopy);  
    } 

    return bmpScreenshot; 
} 

Antwort

4

Sie haben Ihren Strom zu initialisieren, bevor es zu benutzen.

using (MemoryStream myStream = new MemoryStream()) { 
    screenshot.Save(myStream, System.Drawing.Imaging.ImageFormat.Gif); 
} 
+1

Punkte für 'using', um den Stream zu schließen und zu entsorgen. –

+0

@BradleyUffner - Obwohl es gut ist, konsistent zu sein, müssen Sie keine 'MemoryStream' -Instanz entsorgen, es gibt keine nicht verwalteten Ressourcen, die freigegeben werden müssen. Wenn Sie die 'Dispose'-Implementierung in' MemoryStream' betrachten, passiert eigentlich nichts. – Igor

4

von Stream Sie meinen FileStream, MemoryStream, was? Was auch immer der Fall ist, initialisiere die Variable einfach als den richtigen Stream, den du brauchst.

Zum Beispiel:

using(var myStream = new MemoryStream()) 
{....} 
Verwandte Themen