我有一个字节数组表示一张图片。我想将存储在该字节数组中的图片呈现在aspx页面中。我可以使用图像或图像映射控制吗?如果是这样 - 如何?如果没有 - 解决方案是什么?bytearray到图像asp.net
回答
想想如何在网页上提供正常的图像 - 文件名在标记中被引用,并且浏览器向该文件的服务器发送单独的请求。
同样的原则也适用于这里,除了没有引用了静态图像文件,你要引用,供应字节的图像的ASP.NET处理程序:
<img src="/imagehandler.ashx" />
短的处理程序会是这个样子:
public class ImageHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.OutputStream.Write(imageData, 0, imageData.Length);
context.Response.ContentType = "image/JPEG";
}
}
以下是创建ASP.NET中的HttpHander的(长)resource that covers the concepts。
另外,正如Joel指出的那样,考虑一下字节数组来自哪里,因为HttpHandler的服务请求与页面完全不同。在最基本的层面上,这两个请求并不知道彼此或共享任何数据。
一个共同解决这一问题是将图像数据在缓存:
Guid id = Guid.NewGuid();
HttpRuntime.Cache.Add(id.ToString(), imageData);
又通的关键,在查询字符串的HttpHandler的,所以它可以从缓存中获取它:
<img src="/imagehandler.ashx?img=<%=id%>" />
<!-- will print ...ashx?img=42a96c06-c5dd-488c-906f-cf20663d0a43 -->
你可以写一个通用的处理程序将服务于图片:
<%@ WebHandler Language="C#" Class="Picture" %>
public class Picture : System.Web.IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
byte[] buffer = GetPictureFromSomewhere();
context.Response.ContentType = "image/jpeg";
context.Response.OutputStream.Write(buffer, 0, buffer.Length);
}
public bool IsReusable
{
get { return false; }
}
}
然后我打电话吨的aspx页面:
<asp:Image ID="pic" runat="server" ImageUrl="~/Picture.ashx" />
下面的文章,回答你的问题:Auto-bind byte[] to asp:Image
另一件事你可以做的是更快的将不使用asp.net图像控制和使用基本img元素在html中。因此,在您的asp.net页面中,创建一个img元素,并将img和runat设置为server。
然后,你可以做这样的事情:
<img id="img" runat="server" alt=""/>
public DataRow ClaimPhotoRow { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
img.Src = "data:image/jpg;base64," + Convert.ToBase64String((byte[])ClaimPhotoRow[0]);
}
感谢您的不错的技巧:) – 2013-02-07 07:57:51
聪明的解决方案。请注意,版本8之前的IE无法使用数据url方案http://caniuse.com/datauri – 2013-05-23 01:35:29
非常感谢您用最少的步骤解决我的问题。 – Ahmad 2013-05-29 11:14:21
- 1. bytearray到图像
- 2. ByteArray的ASP图像
- 3. 如何将bytearray转换为图像或图像bytearray?
- 4. 转换PIL图像为bytearray
- 5. Flex中的ByteArray图像
- 6. ByteArray图像显示Flex - SQLite
- 7. 图像过滤器/ ByteArray的
- 8. 提炼我以前的“bytearray图像asp.net”问题
- 9. 无法转换图像位图的ByteArray
- 10. bytearray到位图场景
- 11. AJAX将图像转换为ByteArray
- 12. 从ByteArray获取图像大小
- 13. PIL:将Bytearray转换为图像
- 14. 从C#中显示图像javascript byteArray
- 15. Flex处理图像(转换为Bytearray)
- 16. 图像到asp.net图像控制
- 17. 通过ByteArray传递图像到另一个Activity - Android
- 18. 将图像转换到ByteArray中保持颜色
- 19. 流到ByteArray - 将签名垫转换为图像
- 20. 如何将图像文件从URL下载到ByteArray?
- 21. 从byteArray到bigInteger
- 22. 连接long和bytearray到另一个bytearray
- 23. FTP到图像控制asp.net
- 24. 从SD存储到ByteArray的图片
- 25. ASP.net图像处理和添加该图像到图像控制
- 26. 字符串到ByteArray
- 27. 发送ByteArray到JavaScript
- 28. 推送ByteArray到POST
- 29. AS3转换ByteArray的位图
- 30. AS3 ByteArray的C#的bytearray
+1 - 也注意到这意味着你可能需要重新考虑如何您的当前页面的作品,因为你很可能得到的在处理对不同资源的请求过程中的字节数组。 – 2009-11-15 16:39:15
好点Joel。 – 2009-11-15 16:40:21