C# 铸造过程中使用的图像类别不正确;我如何正确地做它?
公共映像映像{get;set;}C# 铸造过程中使用的图像类别不正确;我如何正确地做它?,c#,asp.net,image,C#,Asp.net,Image,公共映像映像{get;set;} Image=(Image)randomImageFromCommentsClass.Image; 我明白了: 无法将System.Drawing.Image转换为System.Web.UI.WebControl 我想我导入了错误的名称空间(System.Drawing)…这可能是错误的。我试图做的是将图像类型从数据库转换为图像对象 public class Comments { public Image Image { get; set; }
Image=(Image)randomImageFromCommentsClass.Image;
我明白了:
无法将System.Drawing.Image转换为System.Web.UI.WebControl
我想我导入了错误的名称空间(System.Drawing)…这可能是错误的。我试图做的是将图像类型从数据库转换为图像对象
public class Comments
{
public Image Image { get; set; }
Image = DBNull.Value.Equals(dr["Avatar"]) ? null: (Image)dr["Image"];
上面的图像属性来自visual studio 2010中的其他类代码文件
不知怎的,强制转换失败了。我该如何修复它?除非您正在强制转换的对象是另一个对象的实例,否则您肯定无法强制转换 您可以使用此snipet将字节数组转换为图像:
public Image byteArrayToImage(byte[] byteArrayIn){
MemoryStream ms = new MemoryStream(byteArrayIn);
Image returnImage = Image.FromStream(ms);
return returnImage
}
要使用WebControl显示动态创建的图像,您需要一个处理程序更多信息:
如果您谈论的是SQL的图像数据类型,那么这些图像将以
字节[]
格式存储,因此您需要将数据库中的数据转换为byte[]变量,然后使用FileStream
在文件系统中创建一个新的临时图像文件,然后将其分配给任何图像控件或任何您想要执行的操作
您正在尝试将存储在数据库中的图像分配给ASP.NET中的图像控件吗
我认为没有任何方法可以将字节[]转换为System.Drawing
下面是我使用的解决方案:
byte[] ImageData;
string filePath = @"~\Image.jpeg"; //path or temporary Image
using (con)
{
con.Open();
SqlCommand getImageCmd = new SqlCommand("/* your SQL query to get Image from database*/ ", con);
ImageData = (byte[])getImageCmd.ExecuteScalar();
con.Close();
}
FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate);
using (fs)
{
foreach (byte b in ImageData)
{
fs.WriteByte(b);
}
fs.Flush();
fs.Close();
}
ImageControl.ImageUrl = "~/Image.jpeg"; // assign that temp Image to Image Control
本文介绍如何创建一个图像控件,该控件将直接从内存接受图像,而无需保存文件或处理程序。希望对你有帮助
是的,它听起来确实是个错误的名称空间。您可以使用完全限定的版本。。。只需在类型中包含名称空间。数据库中的映像的类型是什么?它是属于绘图还是WebControl名称空间?它两者都不属于,图像以字节数组的形式存储在数据库中。lol..要将字节数组转换为图像吗?!?从绘图类,然后把它放到图像网络控制?好的。因此,这将重新运行一个图像,我将能够铸造到绘图。图像。。。如何将Drawing.Image转换为WebControl.Image?您不能直接将Drawing.Image转换为WebControl。您将需要一个处理程序。我用这方面的信息编辑了我的帖子。我尝试这样做1)从数据库中取出图像2)将其转换为图像绘图3)将其转换为web控件。。或者,如果有捷径,可以简单地将其转换为绘图图像。我会立即尝试。稍晚一点谢谢你给我指路