这个也不知道当时谁提的一个小需求,想在一次请求里边,把所有图片返回了,然后再加载,- - 难道直接用img标签不好么。。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script src="jquery-1.6.4.min.js" type="text/javascript"></script> <script src="Base64.js" type="text/javascript"></script> <script src="Deflate.js" type="text/javascript"></script> <script src="PNG.js" type="text/javascript"></script> <script type="text/javascript"> var Sys = {}; var ua = navigator.userAgent.toLowerCase(); if (window.ActiveXObject) Sys.ie = ua.match(/msie ([\d.]+)/)[1]; $(document).ready(function () { $.get("/ImageHandler.ashx", "", function (data) { if (Sys.ie) { var xml_dom = new ActiveXObject("MSXML2.DOMDocument"); var tmpNode1 = xml_dom.createElement("tmpNode1"); tmpNode1.dataType = "bin.base64"; tmpNode1.nodeTypedValue = data.split(';')[0]; $("#img1").attr("src", " data:png/jpeg;base64," + tmpNode1.text.replace(/\n/g, "")); var tmpNode2 = xml_dom.createElement("tmpNode2"); tmpNode2.dataType = "bin.base64"; tmpNode2.nodeTypedValue = data.split(';')[1]; $("#img2").attr("src", " data:png/jpeg;base64," + tmpNode2.text.replace(/\n/g, "")); } else { $("#img1").attr("src", "data:png/jpeg;base64," + data.split(';')[0]); $("#img2").attr("src", "data:png/jpeg;base64," + data.split(';')[1]); } //alert($("#img1").attr("src")); //alert($("#img2").attr("src")); }); }); </script> </head> <body> <img id="img1" width="250" height="250"/> <img id="img2" width="250" height="250"/> </body> </html>
后台:
1 using System; 2 using System.Collections.Generic; 3 using System.Drawing; 4 using System.Drawing.Imaging; 5 using System.Linq; 6 using System.Web; 7 using System.IO; 8 using System.Text; 9 10 namespace JsTest 11 { 12 /// <summary> 13 /// ImageHandler 的摘要说明 14 /// </summary> 15 public class ImageHandler : IHttpHandler 16 { 17 18 public void ProcessRequest(HttpContext context) 19 { 20 var picapath = context.Server.MapPath("~/images/a.png"); 21 var picbpath = context.Server.MapPath("~/images/b.png"); 22 23 var resulta = GetBase64String(picapath); 24 var resultb = GetBase64String(picbpath); 25 26 context.Response.Write(resulta + ";" + resultb); 27 // context.Response.BinaryWrite(data); 28 // context.Response.ContentType = "image/jpeg"; 29 } 30 31 private static string GetBase64String(string picpath) 32 { 33 var img = Image.FromFile(picpath); 34 var stream = new MemoryStream(); 35 img.Save(stream, ImageFormat.Jpeg); 36 img.Dispose(); 37 var data = new Byte[stream.Length]; 38 stream.Position = 0; 39 stream.Read(data, 0, data.Length); 40 stream.Close(); 41 42 // var stream = new FileStream(picpath, FileMode.Open); 43 // var reader = new BinaryReader(stream); 44 // stream.Position = 0; 45 // var data = new Byte[stream.Length]; 46 // reader.Read(data, 0, data.Length); 47 // reader.Close(); 48 // stream.Close(); 49 50 var result = Convert.ToBase64String(data); 51 return result; 52 } 53 54 public bool IsReusable 55 { 56 get 57 { 58 return false; 59 } 60 } 61 } 62 }
下载地址:一次请求多张图片