2009-11-03 16 views
49

私のプログラムにはSystem.Drawing.Imageがあります。ファイルがメモリ内に保持されているファイルシステム上にありません。私はそれからストリームを作成する必要があります。これをどうやってやりますか?System.Drawing.Image to stream C#

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

その後、次を使用することができます:

答えて

102

メモリストリームを使用し

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

どんなフォーマットでGIFを交換し、あなたのシナリオに適しています。

+0

私はまったく同じことを書いていました! – configurator

+0

System.Drawing.Image.Saveには、ストリームに保存するときにフォーマットが必要です。 http://msdn.microsoft.com/en-us/library/ms142147.aspx – jcollum

+2

イメージ保存ステートメントを次のように変更して、元のイメージフォーマットを保持できます。image.Save(stream、image.RawFormat); – Marko

6

は、以下のことを試してみてください

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