System.Drawing.Image zum Streamen von C #

74

Ich habe eine System.Drawing.Imagein meinem Programm. Die Datei befindet sich nicht in dem Dateisystem, in dem sie gespeichert ist. Ich muss einen Stream daraus erstellen. Wie würde ich das machen?

Linda
quelle

Antworten:

147

Versuche Folgendes:

public static Stream ToStream(this Image image, ImageFormat format) {
  var stream = new System.IO.MemoryStream();
  image.Save(stream, format);
  stream.Position = 0;
  return stream;
}

Dann können Sie Folgendes verwenden:

var stream = myImage.ToStream(ImageFormat.Gif);

Ersetzen Sie GIF durch das für Ihr Szenario geeignete Format.

JaredPar
quelle
Ich habe gerade genau das Gleiche geschrieben!
Konfigurator
System.Drawing.Image.Save erfordert beim Speichern in einem Stream ein Format. msdn.microsoft.com/en-us/library/ms142147.aspx
jcollum
10
Sie können das ursprüngliche Bildformat beibehalten, indem Sie die Anweisung zum Speichern von Bildern in Folgendes ändern: image.Save (stream, image.RawFormat);
Marko
14

Verwenden Sie einen Speicherstrom

using(MemoryStream ms = new MemoryStream())
{
    image.Save(ms, ...);
    return ms.ToArray();
}
John Gietzen
quelle