[英]How to bind images to image control dynamically?
是的,我知道...是的,我做了google。 问题是我对ASP.NET还是陌生的,没有任何搜索结果符合我的要求。
我有这个:
<asp:Image ID="imgView" runat="server" />
我在数据库中存储了图像,可以通过以下方法检索它们:
public static List<Image> GetRezeptImages(int rezeptId)
{
using (CookBookDataContext ctx = new CookBookDataContext(Resources.ResourceFile.DBConnection))
{
IEnumerable<RezeptBilder> bilder = from b in ctx.RezeptBilders where b.FKRezept == rezeptId select b;
List<Image> imageList = new List<Image>();
foreach (RezeptBilder b in bilder)
{
imageList.Add(Helper.ByteArrayToImage(b.Bild.ToArray()));
}
return imageList;
}
}
非常重要,因为我从一个Winforms应用程序开始,现在我想将其变成一个ASP网站,因此Image
来自System.Drawing.Image
而不是System.Web.UI.WebControls.Image
。 我也可以将我的图片转换为字节数组,反之亦然:
public static byte[] ImageToByteArray(System.Drawing.Image imageIn)
{
using (MemoryStream ms = new MemoryStream())
{
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
return ms.ToArray();
}
}
public static Image ByteArrayToImage(byte[] byteArrayIn)
{
using (MemoryStream ms = new MemoryStream(byteArrayIn))
{
Image returnImage = Image.FromStream(ms);
return returnImage;
}
}
现在,如果触发了某个事件,则会从数据库中获取System.Drawing.Image
,我想将其显示在图像控件中。 在这里,我需要一个Image-Url,因此必须将图像保存到服务器。 我不能这样做,因为它不是System.Web.UI.WebControls.Image
。 我可以将其转换为字节数组,然后呢?
什么是最温和的方式呢?
提前致谢!
希望这会有所帮助
System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType = "image/Gif";
Response.BinaryWrite(ms.ToArray());
<asp:Image ID="Image1" runat="server" ImageUrl="~/pic.aspx"/>
您可以使用base64字符串显示二进制图像。 就像是-
string base64String = Convert.ToBase64String(bytes, 0, bytes.Length);
Image1.ImageUrl = "data:image/png;base64," + base64String;
您可以通过演示链接获取有关此链接的更多详细信息-
做这样的事情,我可能会为我工作。
public class ImageToSourceConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
Image image = value as Image;
if (image != null)
{
MemoryStream ms = new MemoryStream();
image.Save(ms, image.RawFormat);
ms.Seek(0, SeekOrigin.Begin);
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.StreamSource = ms;
bi.EndInit();
return bi;
}
return null;
}
public object ConvertBack(object value, Type targetType,
object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
创造物产
public Image UserImage
{
get
{
return _model.UserImage;
}
}
您是如何生成byte []的? 它工作正常-
string id = "1";
byte[] bytes = (byte[])GetData("SELECT Data FROM tblFiles WHERE Id =" + id).Rows[0]["Data"];
string base64String = Convert.ToBase64String(bytes, 0, bytes.Length);
Image1.ImageUrl = "data:image/png;base64," + base64String;
private DataTable GetData(string query)
{
DataTable dt = new DataTable();
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(query))
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
sda.SelectCommand = cmd;
sda.Fill(dt);
}
}
return dt;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.