1. 程式人生 > >ASP.NET讀取網路或本地圖片顯示

ASP.NET讀取網路或本地圖片顯示

寫這個的緣由是在CSDN看到的兩個問題:
1、抓取網路圖片,不在本地儲存而直接顯示
2、在站點伺服器上某個磁碟的檔案裡有圖片,想能夠在網站上顯示出來,圖片資料夾不在站點目錄 

一、讀取網路圖片

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <htmlxmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4.     <title></title
    >
  5. </head>
  6. <body>
  7.     <formid="form1"runat="server">
  8.     <div>
  9.         <imgsrc="Handler.ashx?url=http://www.google.com.hk/intl/zh-CN/images/logo_cn.png"mce_src="http://Handler.ashx?url=http://www.google.com.hk/intl/zh-CN/images/logo_cn.png"
  10.             alt="google logo"/>
  11.     </div
    >
  12.     </form>
  13. </body>
  14. </html>
 

Handler.ashx

  1. <%@ WebHandler Language="C#" Class="Handler" %>  
  2. using System;  
  3. using System.Web;  
  4. using System.Net;  
  5. using System.Drawing;  
  6. using System.IO;  
  7. publicclass Handler : IHttpHandler {  
  8.     publicvoid ProcessRequest (HttpContext context) {  
  9.         string imgUrl = context.Request["Url"];  
  10.         if (!string.IsNullOrEmpty(imgUrl))  
  11.         {  
  12.             Uri myUri = new Uri(imgUrl);  
  13.             WebRequest webRequest = WebRequest.Create(myUri);  
  14.             WebResponse webResponse = webRequest.GetResponse();  
  15.             Bitmap myImage = new Bitmap(webResponse.GetResponseStream());  
  16.             MemoryStream ms = new MemoryStream();  
  17.             myImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);  
  18.             context.Response.ClearContent();  
  19.             context.Response.ContentType = "image/Jpeg";  
  20.             context.Response.BinaryWrite(ms.ToArray());  
  21.         }  
  22.     }  
  23.     publicbool IsReusable {  
  24.         get {  
  25.             returnfalse;  
  26.         }  
  27.     }  
  28. }  
 

二、讀取本地圖片

讀取本地檔案,如:d:/1.jpg

  1. <%@ WebHandler Language="C#" Class="Handler2" %>  
  2. using System;  
  3. using System.Web;  
  4. using System.IO;  
  5. using System.Drawing;  
  6. publicclass Handler2 : IHttpHandler {  
  7.     publicvoid ProcessRequest(HttpContext context)  
  8.     {  
  9.         string path = context.Request.QueryString["path"];  
  10.         if (!string.IsNullOrEmpty(path))  
  11.         {  
  12.             FileStream fs = new FileStream(@path, FileMode.Open, FileAccess.Read);  
  13.             Bitmap myImage = new Bitmap(fs);  
  14.             MemoryStream ms = new MemoryStream();  
  15.             myImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);  
  16.             context.Response.ClearContent();  
  17.             context.Response.ContentType = "image/Jpeg";  
  18.             context.Response.BinaryWrite(ms.ToArray());  
  19.         }  
  20.     }  
  21.     publicbool IsReusable {  
  22.         get {  
  23.             returnfalse;  
  24.         }  
  25.     }  
  26. }