2

私たちのアプリケーションでは、いくつかの入力データに基づいて、画像がレンダリングされます。画像はいくつかのチャートです。テスト自動化の一環として、これらのチャートをダウンロードする必要があります。

画像のソースURLがあります。ソースからイメージをダウンロードしてディスクに保存するにはどうすればよいですか。

いろいろな方法で試してみて、ファイルをダウンロードできました。しかし、ファイルを開こうとすると、「有効なビットマップファイルではない、またはその形式は現在サポートされていません」というメッセージが表示されます。

これが私のhtmlです

<div id="chart">
    <img id="c_12" src="Bonus/ModelChartImage?keys%5B0%5D=UKIrelandEBIT&values%5B0%5D=100&privacyModeServer=False&modelId=Bonus" alt="" usemap="#c_12ImageMap" style="height:300px;width:450px;border-width:0px;" />
<map name="c_12ImageMap" id="c_12ImageMap">

    <area shape="rect" coords="255,265,357,266" class="area-map-section" share="Core Bonus" alt="" />
    <area shape="rect" coords="128,43,229,265" class="area-map-section" share="Core Bonus" alt="" />
</map>    
</div> 
4

2 に答える 2

3

Webサイトから画像をダウンロードする方法はたくさんあります(WebClientクラス、HttpWebRequest、HttpClientクラス、中でも新しいHttpClientが最も簡単な方法です)。

クラスHttpClientの例を次に示します。

HttpClient httpClient = new HttpClient();
Task<Stream> streamAsync = httpClient.GetStreamAsync("http://www.simedarby.com.au/images/SD.Corp.3D.4C.Pos.jpg");

Stream result = streamAsync.Result;
using (Stream fileStream = File.Create("downloaded.jpg"))
{
    result.CopyTo(fileStream);
}
于 2012-06-13T12:14:09.010 に答える
3

答えが見つかりました。私たちはあなたの要求にウェブサイトからクッキーコンテナを設定する必要があります。

public static Stream DownloadImageData(CookieContainer cookies, string siteURL)
{
    HttpWebRequest httpRequest = null;
    HttpWebResponse httpResponse = null;

    httpRequest = (HttpWebRequest)WebRequest.Create(siteURL);

    httpRequest.CookieContainer = cookies;
    httpRequest.AllowAutoRedirect = true;

    try
    {
        httpResponse = (HttpWebResponse)httpRequest.GetResponse();
        if (httpResponse.StatusCode == HttpStatusCode.OK)
        {
            var httpContentData = httpResponse.GetResponseStream();

            return httpContentData;
        }
        return null;
    }
    catch (WebException we)
    {
        return null;
    }
    finally
    {
        if (httpResponse != null)
        {
            httpResponse.Close();
        }
    }
}
于 2012-06-15T15:10:29.577 に答える