因此,我从存储图像的数据库中收集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)
的字符串,但这些不起作用。
非常感谢任何帮助。干杯男人和女孩。
答案 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);
}
用于显示图像的控件并不完全清楚,但是任何可以显示图像的控件都应该能够获取Bitmap
或Image
对象。< / p>