.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 ); } |
関連記事
コメントを残す