现在的位置: 首页 > 综合 > 正文

asp.net 一次请求返回多张图片

2012年10月06日 ⁄ 综合 ⁄ 共 2750字 ⁄ 字号 评论关闭

     这个也不知道当时谁提的一个小需求,想在一次请求里边,把所有图片返回了,然后再加载,- - 难道直接用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 }

 

下载地址:一次请求多张图片

抱歉!评论已关闭.