簡體   English   中英

C#從URL下載圖像

[英]C# Download an image from URL

我使用一個網站獲取有關wifi使用情況的統計信息。 該網站創建數據圖形表示的圖像。 它的操作方式是由用戶設置日期。 例如,可以說這是上個月的統計數據。 該網站生成一個URL,然后將其發送到服務器,服務器將返回圖像。 鏈接的示例如下:

https://www.example.com/graph/daily_usage?time_from=2015-06-01+00%3A00%3A00+%2B0100&time_to=2015-06-30+23%3A59%3A59+%2B0100&tsp=1436519988

問題是,我正在制作一個第三方程序,該程序將下載此圖像以供我的程序使用。 但是,我無法使用該文件。 就像文件損壞了一樣。 我嘗試了幾種方法,但也許有人可以建議其他方法。 基本上,如何從URL鏈接下載服務器生成的圖像?

聚苯乙烯

只是注意到,如果我通過瀏覽器右鍵單擊下載文件並保存,則圖像下載的大小為17千字節左右。 但是,如果我使用WebClient方法下載圖像,則它只會下載1.5kb。 為什么會這樣呢? 似乎WebClient方法沒有完全下載。

目前我的代碼

if (hrefAtt == "Usage Graph")
{
    string url = element.getAttribute("src");
    WebClient client = new WebClient();
    client.DownloadFile(url, tempFolderPath + "\\" + currentAcc + "_UsageSummary.png");
    wd.AddImagesToDoc(tempFolderPath + "\\" + currentAcc + "_UsageSummary.png");
    wd.SaveDocument();
}

TempFolderPath是我的桌面\\ TempFolder \\

更新隨機地,我決定用記事本查看文件的原始數據,有趣的是,圖像數據實際上是網站首頁html代碼的副本,而不是圖像的原始數據:S,這有什么意義?

這將下載Google徽標:

var img = Bitmap.FromStream(new MemoryStream(new WebClient().DownloadData("https://www.google.co.uk/images/srpr/logo11w.png")));

首先,您必須了解鏈接紋理。 如果所有鏈接相同或彼此接近,則必須使用substring / remove / datetime等方法來建立新的請求鏈接。 例如;

string today = DateTime.Now.ToShortDateString();
string generatedLink = @"http://www.yoururl.com/image + " + today + ".jpg";
string generatedFileName = @"C:\Usage\usage + " + today + ".jpg";

WebClient wClient = new WebClient();
wClient.DownloadFile(generatedLink, generatedFileName);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM