[C#]指定されたURLの画像をImage型として取得する

.NetFrameworkに用意されているSystem.Drawing.Imageクラスは、FromFile()メソッドで画像データをファイルから読み込む事ができますが、Web上に存在する画像をURL指定で読み込ませる事はできません。


そこで、urlを指定してImage型データを取得するメソッドを作成しました。

//---------------------------------------------------------------------------
/// <summary>
/// 指定されたURLの画像をImage型オブジェクトとして取得する
/// </summary>
/// <param name="url">画像データのURL(ex: http://example.com/foo.jpg) </param>
/// <returns>         画像データ</returns>
//---------------------------------------------------------------------------
public static System.Drawing.Image loadImageFromURL( string url ) { 
    int buffSize = 65536; // 一度に読み込むサイズ
    MemoryStream imgStream = new MemoryStream();
 
    //------------------------
    // パラメータチェック
    //------------------------
    if ( url == null || url.Trim().Length <= 0 ) {
        return null;
    }
 
    //----------------------------
    // Webサーバに要求を投げる
    //----------------------------
    WebRequest req = WebRequest.Create( url );
    BinaryReader reader = new BinaryReader( req.GetResponse().GetResponseStream() );
 
    //--------------------------------------------------------
    // Webサーバからの応答データを取得し、imgStreamに保存する
    //--------------------------------------------------------
    while ( true ) {
        byte[] buff = new byte[ buffSize ];
 
        // 応答データの取得
        int readBytes = reader.Read( buff, 0, buffSize );
        if ( readBytes <= 0 ) {
            // 最後まで取得した->ループを抜ける
            break;
        }
 
        // バッファに追加
        imgStream.Write( buff, 0, readBytes );
    }
 
    return new Bitmap( imgStream );
}

関連記事

コメントを残す

メールアドレスが公開されることはありません。