如何在ASP.NET Response.BinaryWrite生成的Javascript中处理字节数组图像

时间:2013-12-10 13:33:47

标签: javascript asp.net image

我正在尝试使用另一个团队拥有的服务器端代码,而且我无法轻易更改。它正在处理图像并通过Response.BinaryWrite返回它:

MemoryStream ms = new MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
var imageToReturn = ms.ToArray();

Response.ContentType = "image/jpg";
Response.BinaryWrite(imageToReturn);

但是,当我尝试对结果进行标准的客户端处理时,比如使用Javascript的btoa()将其从字节数组转换为ArrayBuffer,我得到的消息就像“'btoa'失败了:字符串是encoded包含Latin1范围之外的字符“。

我真的只是希望能够显示和使用这个图像 - 所以任何使它出现在画布中,或将其转换为数据URL等的方法都会帮助我。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

如果您只想显示图片,为什么不将src img属性{@ 1}}标记到ASP.Net页面的网址,该网页正在写入JPG响应。

如果要在画布中显示图像,可以按照以下方式进行操作

myimage = new Image();
myimage.onload = function () {
    var canvas = document.getElementById('canv');
    var ctx = canvas.getContext('2d');

    ctx.drawImage(myimage, x, y);
}
myimage.src = '<url to the asp.net page>';