[C#] Image -> Stream
んで、何が言いたかったかというと、ImageデータをTCP/IPで送信したい衝動に駆られて(?)、Image->byte に変換したかったのだが、どうやら直接は無理らしい。そこでいったんStreamに格納して、byteにすればいいのではないかと考えた。Image -> Stream は以下のようにすればできるようだ。
// 画像データ読み込み
System.Drawing.Image img = System.Drawing.Image.FromFile(@"H:\tmp1\010.jpg");// Stream作成
System.IO.MemoryStream ms = new System.IO.MemoryStream(1024*1024);// Streamに画像データ読み込み
img.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
上の例では、JPGフォーマットのファイルを読み込んで、PNGフォーマットのStreamに変換している。ちなみにこれをまたファイルに書き戻したければ、以下のようにすればよい
これで作成されるファイルは 50KB -> 500KB と10倍に膨れ上がった。.NET のPNGフォーマットはどういうデータ構造になってるんだ?(笑)
// Streamから画像データ読み込み
System.Drawing.Image img_png = System.Drawing.Image.FromStream(ms);