如何使用处理程序显示图像预览

本文关键字:图像 显示图 显示 何使用 处理 程序 | 更新日期: 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(或你使用的任何东西(。然后你可以简单地写回页面。

这将允许您从数据库中动态提取图像,同时将其用作页面上的单独元素。