如何使用处理程序显示图像预览
本文关键字:图像 显示图 显示 何使用 处理 程序 | 更新日期: 2023-09-27 18:00:57
我正在使用一个处理程序在数据库的页面上显示图像
public void ProcessRequest (HttpContext context)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = ConfigurationManager.ConnectionStrings["XYZ"].ConnectionString;
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "Select Image from EmployeeInfo where Emp_Id = @ID";
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
SqlParameter ImageID = new SqlParameter("@ID", System.Data.SqlDbType.Int);
ImageID.Value = context.Request.QueryString["ID"];
int height = Convert.ToInt32(context.Request.QueryString["Ht"]);
int width = Convert.ToInt32(context.Request.QueryString["Wt"]);
cmd.Parameters.Add(ImageID);
con.Open();
SqlDataReader dReader = cmd.ExecuteReader();
if (dReader.HasRows)
{
dReader.Read();
byte[] imagethumbnail = null;
try
{
imagethumbnail = MakeThumbnail((byte[])dReader["Image"], width, height);
}
catch
{
}
context.Response.BinaryWrite(imagethumbnail);
}
dReader.Close();
con.Close();
}
public static byte[] MakeThumbnail(byte[] myImage, int thumbWidth, int thumbHeight)
{
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
using (Image thumbnail = Image.FromStream(new MemoryStream(myImage)).GetThumbnailImage(thumbWidth, thumbHeight, null, new IntPtr()))
{
thumbnail.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
return ms.ToArray();
}
}
当显示数据库中的图像时,此代码运行良好。现在我想做的是使用不同的处理程序显示图像预览。现在,如果你看上面的代码,你可以看到我们有byte[]形式的图像数据。我正在上传一张图片,我可以获得字节[]中的数据,但我的数据在.cs页面上。
context.Response.BinaryWrite(imagethumbnail);
如果我使用这个命令将数据从页面转换为字节,它只显示页面上的图像。你能告诉我如何将这些数据显示成图像吗?
数据流没有太大变化这是我想要使用的,但如何将byte[]从.cs页面获取到处理程序。
imagethumbnail = MakeThumbnail((byte[])dReader["Image"], width, height);
context.Response.BinaryWrite(imagethumbnail);
您可以将数据库映像逻辑分离为通用处理程序(ASHX(,然后将该处理程序用作映像的src
,例如
<img src="GetImage.ashx?id=1"/>
你需要创建GetImage.ashx并适当地处理你的id(或你使用的任何东西(。然后你可以简单地写回页面。
这将允许您从数据库中动态提取图像,同时将其用作页面上的单独元素。