我有一個字節數組表示一張圖片。我想將存儲在該字節數組中的圖片呈現在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