C#从URL下载图像

时间:2015-07-13 11:13:28

标签: c# image url bitmap server

我使用网站获取有关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

问题是,我正在制作第三方程序,将下载此图像以在我的程序中使用。但是,我无法使用该文件。就好像文件已损坏或其他东西。我尝试了一些方法,但也许有人可以提出不同的方法。 基本上,如何从网址链接下载服务器生成的图片?

P.S。

注意到如果我通过右键单击浏览器并保存来下载文件,则图像下载的大小为17.something千字节。但是,如果我使用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这有什么意义?

2 个答案:

答案 0 :(得分:2)

这将下载Google徽标:

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

答案 1 :(得分:0)

首先,您必须了解链接纹理。如果所有链接相同或彼此接近,则必须使用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);