System.Drawing.Image для потоку C #


78

У мене є System.Drawing.Imageпрограма. Файл відсутній у файловій системі, він зберігається в пам'яті. Мені потрібно створити з нього потік. Як би я це зробив?

Відповіді:


150

Спробуйте наступне:

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

Тоді ви можете використовувати наступне:

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

Замініть GIF на будь-який формат, який підходить для вашого сценарію.


Я просто писав саме те саме!
конфігуратор

System.Drawing.Image.Save вимагає формату під час збереження у потоці. msdn.microsoft.com/en-us/library/ms142147.aspx
jcollum

11
Ви можете зберегти вихідний формат зображення, змінивши оператор збереження зображення на: image.Save (stream, image.RawFormat);
Марко

14

Використовуйте потік пам'яті

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

0
public static Stream ToStream(this Image image)
{
     var stream = new MemoryStream();

     image.Save(stream, image.RawFormat);
     stream.Position = 0;

     return stream;
 }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.