C# 如何在windows 8应用程序中将字节数组绑定为图像
我对这个网站很陌生。这是我的第一个问题!希望有人知道答案 这里是交易,我有一个数据库的实体持有一个字节数组作为图片(实体属性之一)。 以下是在将pic保存到DB之前将其转换为字节[]的代码:C# 如何在windows 8应用程序中将字节数组绑定为图像,c#,database,image,xaml,data-binding,C#,Database,Image,Xaml,Data Binding,我对这个网站很陌生。这是我的第一个问题!希望有人知道答案 这里是交易,我有一个数据库的实体持有一个字节数组作为图片(实体属性之一)。 以下是在将pic保存到DB之前将其转换为字节[]的代码: public async Task<byte[]> ImageFileToByteArrayAsync(StorageFile file) { IRandomAccessStream stream = await file.OpenAsync(Windows.Storage.FileAc
public async Task<byte[]> ImageFileToByteArrayAsync(StorageFile file)
{
IRandomAccessStream stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
BitmapDecoder decoder = await BitmapDecoder.CreateAsync(stream);
PixelDataProvider pixelData = await decoder.GetPixelDataAsync();
return pixelData.DetachPixelData();
}
调试时,线程进入转换器,“值”正确!但是我怎么也看不到这张照片。什么都没有发生,只是图像无法显示
谢谢观众! 您应该在数据库中存储原始编码图像缓冲区(即二进制图像文件内容),而不是原始像素数据:
public async Task<byte[]> ImageFileToByteArrayAsync(StorageFile file)
{
var buffer = await FileIO.ReadBufferAsync(file);
return buffer.ToArray();
}
公共异步任务ImageFileToByteArrayAsync(存储文件)
{
var buffer=await FileIO.ReadBufferAsync(文件);
返回buffer.ToArray();
}
public class ByteArrayToImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value == null || !(value is byte[]))
return null;
using (InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream())
{
using (DataWriter writer = new DataWriter(stream.GetOutputStreamAt(0)))
{
writer.WriteBytes((byte[])value);
writer.StoreAsync().GetResults();
}
BitmapImage image = new BitmapImage();
image.DecodePixelHeight = 200;
image.DecodePixelWidth = 150;
image.SetSource(stream);
return image;
}
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
public async Task<byte[]> ImageFileToByteArrayAsync(StorageFile file)
{
var buffer = await FileIO.ReadBufferAsync(file);
return buffer.ToArray();
}