バイナリデータから画像を作成する

注意:
この文書は以前「.NETでいきまっしょい!」で公開していたものですが、公開以降メンテナンスされていません。 今や古い情報となった内容が記載されている場合があるのでご注意ください。

 バイナリデータからImageオブジェクトなどの画像を作成する。 ビットマップを直接バイナリデータとして生成し、表示する場合などに有効な方法。
VB.NET
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
Dim image As Image = Nothing

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    ' バイナリデータとしての画像を作成する
    Dim buffer As Byte()
    Dim fstream As New FileStream("E:\Test.jpg", FileMode.Open, FileAccess.Read)
    Dim reader As New BinaryReader(fstream)

    buffer = reader.ReadBytes(CInt(fstream.Length))

    ' バッファからMemoryStreamオブジェクトを作成する
    Dim mstream As New MemoryStream(buffer)

    ' ストリームからImageオブジェクトを作成する
    image = Image.FromStream(mstream)

End Sub

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint

    ' フォーム上に描画
    If Not image Is Nothing Then e.Graphics.DrawImage(image, 0, 0)

End Sub
C#
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
Image image = null;

private void Form1_Load( System.Object sender, System.EventArgs e )
{
    // バイナリデータとしての画像を作成する
    byte [] buffer;
    FileStream fstream = new FileStream( "E:\\Test.jpg", FileMode.Open, FileAccess.Read);
    BinaryReader reader = new BinaryReader( fstream);

    buffer = reader.ReadBytes( (int)fstream.Length );

    // バッファからMemoryStreamオブジェクトを作成する
    MemoryStream mstream = new MemoryStream( buffer);

    // ストリームからImageオブジェクトを作成する
    image = Image.FromStream( mstream );
}

private void Form1_Paint( object sender, System.Windows.Forms.PaintEventArgs e ) 
{
    // フォーム上に描画
    if ( image != null ) e.Graphics.DrawImage( image, 0, 0 );
}