ASP.NET保存远程图片到本地的函数

.NET技术    2010-01-12 21:15  

  使用ASP.NET抓取远程图片保存到本地,是个不错的主意,这样图片的访问速度就快,以下是本站原创的保存远程图片到本地的函数,支持.bmp,.jpg,.jpeg,.gif,.png等格式的远程图片。

  源代码如下:

  导入命名空间

  using System.Net;
  using System.IO;
  using System.Drawing.Imaging;

  /// <summary>
  /// 下载远程图片保存到本地
  /// </summary>
  /// <param name="savedir">本地保存路径</param>
  /// <param name="imgpath">远程图片文件</param>
  /// <returns></returns>
  public string downRemoteImg(string savedir,string imgpath)
  {
    if (string.IsNullOrEmpty(imgpath))
      return string.Empty;
    else
    {
      string imgName = string.Empty;
      string imgExt = string.Empty;
      string saveFilePath = string.Empty;
      imgName = imgpath.Substring(imgpath.LastIndexOf("/"), imgpath.Length - imgpath.LastIndexOf("/"));
      imgExt = imgpath.Substring(imgpath.LastIndexOf("."), imgpath.Length - imgpath.LastIndexOf("."));
           
      saveFilePath = Server.MapPath(savedir);
      if (!Directory.Exists(saveFilePath))
        Directory.CreateDirectory(saveFilePath);

      try
      {
        WebRequest wreq = WebRequest.Create(imgpath);
        wreq.Timeout = 10000;
        HttpWebResponse wresp = (HttpWebResponse)wreq.GetResponse();
        Stream s = wresp.GetResponseStream();
        System.Drawing.Image img;
        img = System.Drawing.Image.FromStream(s);
        switch (imgExt.ToLower())
        {
          case ".gif":
            img.Save(saveFilePath + imgName, ImageFormat.Gif);
            break;
          case ".jpg":
          case ".jpeg":
            img.Save(saveFilePath + imgName, ImageFormat.Jpeg);
            break;
          case ".png":
            img.Save(saveFilePath + imgName, ImageFormat.Png);
            break;
          case ".icon":
            img.Save(saveFilePath + imgName, ImageFormat.Icon);
            break;
          case ".bmp":
            img.Save(saveFilePath + imgName, ImageFormat.Bmp);
            break;
        }

        img.Dispose();
        s.Dispose();

        return savedir + imgName;
      }
      catch
      {
        return imgpath;
      }
    }
  }

  使用方法:

  如保存到本地的test目录:

  Response.Write(this.downRemoteImg("test", "http://www.xueit.com/ads/top760.gif"));

在线留言

我要留言