ASP.NET讀取網路或本地圖片顯示
阿新 • • 發佈:2019-01-27
寫這個的緣由是在CSDN看到的兩個問題:
1、抓取網路圖片,不在本地儲存而直接顯示
2、在站點伺服器上某個磁碟的檔案裡有圖片,想能夠在網站上顯示出來,圖片資料夾不在站點目錄
一、讀取網路圖片
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <htmlxmlns="http://www.w3.org/1999/xhtml">
- <head>
-
<title></title
- </head>
- <body>
- <formid="form1"runat="server">
- <div>
- <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"
- alt="google logo"/>
-
</div
- </form>
- </body>
- </html>
Handler.ashx
- <%@ WebHandler Language="C#" Class="Handler" %>
- using System;
- using System.Web;
- using System.Net;
- using System.Drawing;
- using System.IO;
- publicclass Handler : IHttpHandler {
-
publicvoid ProcessRequest (HttpContext context) {
- string imgUrl = context.Request["Url"];
- if (!string.IsNullOrEmpty(imgUrl))
- {
- Uri myUri = new Uri(imgUrl);
- WebRequest webRequest = WebRequest.Create(myUri);
- WebResponse webResponse = webRequest.GetResponse();
- Bitmap myImage = new Bitmap(webResponse.GetResponseStream());
- MemoryStream ms = new MemoryStream();
- myImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
- context.Response.ClearContent();
- context.Response.ContentType = "image/Jpeg";
- context.Response.BinaryWrite(ms.ToArray());
- }
- }
- publicbool IsReusable {
- get {
- returnfalse;
- }
- }
- }
二、讀取本地圖片
讀取本地檔案,如:d:/1.jpg
- <%@ WebHandler Language="C#" Class="Handler2" %>
- using System;
- using System.Web;
- using System.IO;
- using System.Drawing;
- publicclass Handler2 : IHttpHandler {
- publicvoid ProcessRequest(HttpContext context)
- {
- string path = context.Request.QueryString["path"];
- if (!string.IsNullOrEmpty(path))
- {
- FileStream fs = new FileStream(@path, FileMode.Open, FileAccess.Read);
- Bitmap myImage = new Bitmap(fs);
- MemoryStream ms = new MemoryStream();
- myImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
- context.Response.ClearContent();
- context.Response.ContentType = "image/Jpeg";
- context.Response.BinaryWrite(ms.ToArray());
- }
- }
- publicbool IsReusable {
- get {
- returnfalse;
- }
- }
- }