C# 在图像控件中显示字节[]
因此,我从存储图像的数据库中收集varbinary(MAX)值。 它被转换为字节[],然后目标是在图像控件中显示它 这是我从数据库中读取数据的地方C# 在图像控件中显示字节[],c#,sql,asp.net,image,C#,Sql,Asp.net,Image,因此,我从存储图像的数据库中收集varbinary(MAX)值。 它被转换为字节[],然后目标是在图像控件中显示它 这是我从数据库中读取数据的地方 public TemplateData(SqlDataReader dr) { initialiseData(); if (dr.HasRows) { Logo = (byte[])dr["Logo"]; //Logo = dr
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;
}
因此,现在我将一个字节[]传递到一个图像控件的源代码中,它将改为一个字符串。我曾尝试使用Convert.ToBase64String(Logo)
和ToString(Logo)
将其转换为字符串,但这些都不起作用
非常感谢您的帮助。大家好。尝试将字节数组转换为图像,并将其分配给picturebox,如下所示
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)
{
}
希望有帮助。正如您可能已经注意到的,您无法在网页中“打印”图像。你现在需要有点创意 您要研究的是Response.BinaryWrite。有关这方面的更多信息,请参见: 您可能还需要一个通用的ashx处理程序。以下是如何使用处理程序显示图片的示例: 我的建议是将徽标作为字节[]存储到http会话中。将图像源放入httphandler yourgonacreate.ashx。然后,您可以将存储在那里的字节[]二进制写入会话 希望这有帮助 如Michael所示,您可以使用以下内容将字节数组转换为
位图
对象:
Bitmap bitmap = null;
using (MemoryStream imageStream = new MemoryStream(imageData))
{
bitmap = new Bitmap(imageStream);
}
现在还不完全清楚控件显示图像所用的是什么,但是任何可以显示图像的控件都应该能够获取
位图
或图像
对象。是的,对不起,应该提到。是的,这让它变得更加棘手。如果图像足够小,您可以在现代浏览器中使用Convert.ToBase64String
(您只需使用数据URI方案,例如Data:image/png;base64,对于png,实际的base64string
)。如果这不合理,您必须有一个单独的请求来加载映像,这意味着要么将映像保存在磁盘上,要么使用HttpHandler
返回实际的映像数据-当然,它通常必须再次从服务器请求数据(或者您必须将其保存在会话中,但这也很棘手)。抱歉,伙计们,原来它们是ole对象,所以我无法像这样显示它们:,|为您的努力干杯!