如何从URL加载所有图像?

时间:2014-10-09 09:39:56

标签: c# import unity3d

我正在尝试从网站获取所有图片文件,并在图库中显示这些文件。因此,人们可以滚动浏览所有图像,就像我使用localy存储的图像here一样。

经过一些搜索后,我找到this example,但它仅用于单张图片加载,而不是用于此在线目录中的所有图片,使用以下内容。

//Location of image directory with xxx images.  
string directoryUrl = "http://www.foo.com/bar"; 

void DownloadTextures(string url)
{
    try
    {
        WebRequest req = WebRequest.Create(url);
        WebResponse response = req.GetResponse();
        Stream stream = response.GetResponseStream();
    }
    catch ( Exception e)
    {
        print("stuff went wrong: " +e)
    }
}

那么如何从在线目录中获取所有图像,这是完成这项工作的正确方法吗?

PS。这一切都在统一引擎中完成,它有一些局限性。

2 个答案:

答案 0 :(得分:1)

using System.Net;
using System.IO;
using System.Text.RegularExpressions;
private void Form1_Load(object sender, EventArgs e)
{
    string urlAddress = "http://melloniax.com/css/style.css";
    string urlBase = "http://melloniax.com";

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlAddress);
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    string data = "";
    if (response.StatusCode == HttpStatusCode.OK)
    {
        Stream receiveStream = response.GetResponseStream();
        StreamReader readStream = null;
        if (response.CharacterSet == null)
            readStream = new StreamReader(receiveStream);
        else
            readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));
        data = readStream.ReadToEnd();
        response.Close();
        readStream.Close();
    }
    MatchCollection matches = Regex.Matches(data, @"\(..(?<link>[^.]*(\.jpg|\.png|\.gif)) *\)");
    for (int a = 0; a < matches.Count; a++)
        MessageBox.Show(urlBase + matches[a].Groups["link"].Value);
}

这适用于您的示例,如果您还需要其他任何内容,例如如何从您告诉我的URL中实际保存imgs。

答案 1 :(得分:1)

由于正则表达式以really bad的方式解析html,我认为最好将某些库用于您的目的。 我听说过的最好的是HtmlAgilityPack

如何使用它解析图像的示例,您可以找到here

然后,您可以使用WebClient.DownloadFile方法下载this等图片。请注意,图片链接可能是相对的,因此您也需要处理它。