使用jQuery将byte []渲染为图像

时间:2011-02-25 15:25:44

标签: c# jquery sql-server image

我目前正在从SQL Server数据库中读取一个图像为byte []。我想将图像作为byte []或真实图像传递给jQuery并动态加载它。

如何以及最佳方法是什么?

提前致谢。 :)

编辑:以下是解决方案:

  1. 服务器端/ C#: string json = JsonConvert.SerializeObject(employee);
  2. 客户端/ Ajax: $('#image').attr('src', "data:image/jpg;base64,"+employee.Image);

4 个答案:

答案 0 :(得分:9)

使用正确的内容类型集从Web服务器返回byte [],这样您就可以将其设置为图像标记的源。应该是最简单的解决方案。

答案 1 :(得分:7)

如果必须这样做,可以使用以下语法将图像数据直接插入src属性:

data:image/<type>;base64,<data>

替换为图像类型(jpg,png,gif)以及以base 64编码的数据。

然而,正如decyclone所说,最好的方法是创建一个仅输出图像数据的单独页面,并发送相应的内容类型标题。然后将图像src设置为指向该页面。

答案 2 :(得分:3)

我不认为使用 jQuery 是正确的做法。这是客户端的事情。 JavaScript,具体而言。

通常,您创建一个页面,使用Response.Write()将所有这些字节写入数组,并根据图像类型将内容类型设置为jpeg,bmp等。

答案 3 :(得分:1)

我目前正在阅读JSON响应中的图片。我想将这个编码的字符串传递给Jquery模板上的图像控件并动态加载它,如何以及最好的方法是什么?模板如下:

<script id="ImageDiv" type="image/png">
    <div style="width:200px;height:150px;>
            <img src="${ImageView}" alt="" />
        </div>
</script>

Js文件如下:

var demo = new Object();

$.each(msg.images, function (key, value) 
            {
                if (this.IsImage)
                 {
                    demo["ImageView"]="data:image/png;base64,"+this.Image;
                    $('#ImageDiv').tmpl(demo).appendTo("#Demo-Image");

                 }
            });

JSON回复如下:

msg = {"Images":[ "Description": "Image1", "Image": "encoded string of image", "IsImage": true, "MimeType": "image/png", } ]

更少的空间来复制编码的图像字符串。