Bạn có thể BASE64 mã hóa nội dung của hình ảnh trực tiếp vào thuộc tính SRC, tuy nhiên, tôi tin rằng chỉ Firefox sẽ phân tích cú pháp này thành hình ảnh.
Những gì tôi thường làm là một tạo một HTTPHandler rất nhẹ để phục vụ những hình ảnh:
using System;
using System.Web;
namespace Example
{
public class GetImage : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
if (context.Request.QueryString("id") != null)
{
Blob = GetBlobFromDataBase(id);
context.Response.Clear();
context.Response.ContentType = "image/pjpeg";
context.Response.BinaryWrite(Blob);
context.Response.End();
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
Bạn có thể tham khảo này trực tiếp trong thẻ img của bạn:
<img src="GetImage.ashx?id=111"/>
Hoặc, bạn thậm chí có thể tạo ra điều khiển máy chủ thực hiện điều đó cho bạn:
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Example.WebControl
{
[ToolboxData("<{0}:DatabaseImage runat=server></{0}:DatabaseImage>")]
public class DatabaseImage : Control
{
public int DatabaseId
{
get
{
if (ViewState["DatabaseId" + this.ID] == null)
return 0;
else
return ViewState["DataBaseId"];
}
set
{
ViewState["DatabaseId" + this.ID] = value;
}
}
protected override void RenderContents(HtmlTextWriter output)
{
output.Write("<img src='getImage.ashx?id=" + this.DatabaseId + "'/>");
base.RenderContents(output);
}
}
}
Điều này có thể được sử dụng như
<cc:DatabaseImage id="db1" DatabaseId="123" runat="server/>
Và tất nhiên, bạn có thể đặt cơ sở dữ liệuId trong codebehind nếu cần.
Nếu bạn đang làm việc với System.Drawing trong ASP.NET, [đọc những cạm bẫy bạn cần phải tránh] (http://nathanaeljones.com/163/20-image-resizing-pitfalls/). Ngoài ra, chỉ cần sử dụng thư viện [my ImageResizing.Net] (http://imageresizing.net) để tránh tất cả các lỗi GDI, có được trình đọc SQL Blob được tối ưu hóa và hệ thống lưu trữ bộ nhớ đệm cực tốt. –
Bài viết sau sẽ giúp bạn: [Tự động liên kết byte [] thành asp: Hình ảnh] (http://www.codeproject.com/Tips/445876/Auto-bind-byte-to-asp-Image) –