我有这张表,并希望从中获取数据。它包含一个图像文件,我将其保存为varbinary
数据类型。我想在数据网格中显示图像作为描述。从SQL Server获取图像到wpf数据网格C#Ado.Net数据实体
我有用于转换到varbinary
(图像)和从图像到字节以下代码从字节。
public byte[] ConvertToBytes(BitmapImage bitmapImage)
{
using (var stream = new MemoryStream())
{
var encoder = new PngBitmapEncoder(); // or some other encoder
encoder.Frames.Add(BitmapFrame.Create(bitmapImage));
encoder.Save(stream);
return stream.ToArray();
}
}
public ImageSource BytesToImage(byte[] imageData)
{
using (var ms = new MemoryStream(imageData))
{
var image = new BitmapImage();
image.BeginInit();
image.CacheOption = BitmapCacheOption.OnLoad;
image.StreamSource = ms;
image.EndInit();
ImageSource imgSrc = image as ImageSource;
return imgSrc;
}
}
从图像转换到byte[]
的作品。但我不确定是否从字节转换为图像的代码工作。
我也有在LINQ查询编译错误,我从数据库中调用数据:
public List<RoomViewModel> getRooms()
{
List<RoomViewModel> getRoomsQuery;
using (db = new MyHotelDBContext())
{
getRoomsQuery = (from r in db.Rooms
join t in db.RoomTypes on r.RoomTypeID equals t.ID
join f in db.Floors on r.FloorID equals f.ID
select new RoomViewModel
{
ID = r.ID,
Nr = r.Nr,
rType = t.Name,
Image = BytesToImage(r.Image as BitmapImage),
Description = r.Description,
rFloor = f.Floor1
}).ToList();
}
return getRoomsQuery ?? new List<RoomViewModel>();
}
哪里是这一行的问题:
Image = BytesToImage(r.Image as BitmapImage)
如何修复/改进这个代码?
替换了
Image = BytesToImage(r.Image as BitmapImage)
问:从图像到字节[]的(转换)起作用。但我不确定从字节到图像的(转换)代码是否有效。 A:你究竟做了什么来验证这一点?建议:直到你可以从image => database =>成功返回到可显示的图像为止,你可能不应该假设任何*“有用”......问:“编译错误”究竟是什么? ? – paulsm4您必须将字节数组传递给BytesToImage,而不是BitmapImage。所以它应该读取'BytesToImage(r.Image as byte [])''。 – Clemens
请注意,您可以直接从BytesToImage返回'image'。不需要'ImageSource imgSrc = image作为ImageSource;'。 – Clemens