在图像控件中显示byte []

时间:2015-05-21 12:38:41

标签: c# sql asp.net image

因此,我从存储图像的数据库中收集varbinary(MAX)值。 它被转换为byte [],然后目标是在图像控件中显示它。

这是我从数据库中读取的地方

        public TemplateData(SqlDataReader dr)
    {
        initialiseData();
        if (dr.HasRows)
        {

            Logo = (byte[])dr["Logo"];

            //Logo = dr["Logo"].ToString();
            TemplateId = dr["TemplateId"].ToString();
            Comment = dr["Comment"].ToString();
            SchemeCode = dr["SchemeCode"].ToString();
            Version = dr["Version"].ToString();
        }
    }

这是值显示在相应控件中的位置

        protected void ddSchemeCode_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ddSchemeCode.SelectedIndex > 0)
        {
            // Existing Data to load from database
            TemplateData temp = DataClass.ReturnData(ddSchemeCode.SelectedItem.Text);
            if (temp != null)
            {
                txtVersion.Text = temp.Version;
                txtComment.Text = temp.Comment;
                txtSchemeCode.Text = temp.SchemeCode;
                txtTemplateId.Text = temp.TemplateId;
                img.Src = temp.Logo;
            }

所以目前我正在将一个byte []传递给一个图像控件的源代码,它会像一个字符串一样。我尝试将其转换为包含Convert.ToBase64String(Logo)ToString(Logo)的字符串,但这些不起作用。

非常感谢任何帮助。干杯男人和女孩。

3 个答案:

答案 0 :(得分:1)

尝试将字节数组转换为图像并将其分配到图片框,如下所示

        try
        {
            using (MemoryStream mStream = new MemoryStream())
            {
                // where pData is your byte array
                mStream.Write(pData, 0, Convert.ToInt32(pData.Length));
                Image originalImage = Image.FromStream(mStream);
                picBox.Image = originalImage;
            }
        }
        catch (Exception ex)
        {
        }

希望它有所帮助。

答案 1 :(得分:1)

您可能已经注意到,您无法在网页中“打印”图像。你现在需要有点创意。

您想要了解的是Response.BinaryWrite。有关详细信息,请访问:https://msdn.microsoft.com/en-us/library/system.web.httpresponse.binarywrite%28v=vs.110%29.aspx

您可能还需要一个通用的ashx处理程序。以下是如何使用处理程序显示图片的示例:http://www.dotnetperls.com/ashx

我的建议是将徽标作为byte []存储到http会话中。将图像的来源放到HttpHandlerYourGonnaCreate.ashx。然后,您可以将存储的字节[]二进制写入那里的会话。

希望这有帮助!

答案 2 :(得分:1)

当Michael显示here时,您可以将字节数组转换为Bitmap对象,如下所示:

Bitmap bitmap = null;
using (MemoryStream imageStream = new MemoryStream(imageData))
{
    bitmap = new Bitmap(imageStream);
}

用于显示图像的控件并不完全清楚,但是任何可以显示图像的控件都应该能够获取BitmapImage对象。< / p>