在转发器控制上显示图像
本文关键字:显示图 图像 显示 转发器 控制 | 更新日期: 2023-09-27 18:10:37
学习c# ASP.NET。我有一个问题与中继器控制。我想在存储在数据库中的页面上显示图像。我从北风数据库收集信息。
Categories table
SQL语法:
CREATE TABLE [dbo].[Categories](
[CategoryID] [int] IDENTITY(1,1) NOT NULL,
[CategoryName] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[Description] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Picture] [image] NULL)
c#语法:
NorthWindDataContext db = new NorthWindDataContext();
List<Category> oList = new List<Category>();
oList = db.Categories.ToList();
Repeater1.DataSource = oList;
aspx语法:
<ItemTemplate>
<tr>
<td>
<%#DataBinder.Eval(Container, "DataItem.Picture")%>
</td>
</tr>
</ItemTemplate>
运行代码后,在我的页面我没有得到图片。帮我把图片放到我的页面上。提前感谢。如果有任何疑问请问。
您将图像作为二进制数据存储在数据库中,因此您不能按原样显示。
MSDN on image
数据类型:
常用的方法是从内存流中创建从0到2^31-1(2,147,483,647)的变长二进制数据字节。
System.Drawing.Image
的实例,然后在响应中显式地写入它。该功能应该由ASHX处理程序包装。参见web中的例子,有很多。
处理程序伪代码如下:(然后在ASPX中只引用处理程序)
IEnuemrable<byte> binaryImageData = queryExecutor.GetImageData(imageId);
// do not forget to dispose or use 'using'
var memoryStream = new MemoryStream();
memoryStream.Write(imageByte, 0, binaryImageData.Length);
System.Drawing.Image image = System.Drawing.Image.FromStream(memoryStream);
// ... create JPEG
context.Response.ContentType = "image/jpeg";
jpegImage.Save(context.Response.OutputStream,
System.Drawing.Imaging.ImageFormat.Jpeg);
我找到的好例子:
- SO Post:动态渲染asp: asp中BLOB条目中的图像。净
- c#从数据库中保存和加载图像