我正在使用 Visual Studio 2010(桌面应用程序)并使用 LINQ to SQL 将图像/视频或音频文件保存到数据类型 VarBinary (MAX)
的数据库中。我可以做到这一点...问题是,我无法获取它们并在 xaml 中显示它们,因为我无法正确获取转换部分。这是我到目前为止所拥有的(尽管它不起作用);
private void bt_Click (object sender, RoutedEventArgs e)
{
databaseDataContext context = new databaseDataContext();
var imageValue = from s in context.Images
where s.imageID == 2
select s.imageFile;
value = imageValue.Single().ToString();
//convert to string and taking down to next method to get converted in image
}
public string value { get; set; }
public object ImageSource //taking from http://stackoverflow.com/
{
get
{
BitmapImage image = new BitmapImage();
try
{
image.BeginInit();
image.CacheOption = BitmapCacheOption.OnLoad;
image.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
image.UriSource = new Uri(value, UriKind.Absolute);
image.EndInit();
Grid.Children.Add(image);
}
catch { return DependencyProperty.UnsetValue; } return image;
}
}
我什至不确定我是否走在正确的轨道上?我假设视频或音频是非常相似的方法?
最佳答案
由于您的图像以二进制格式存储在数据库中,因此您希望通过利用 MemoryStream 对象将其“流”到图像对象中。
查看您的代码,您的解决方案将如下所示:
BitmapImage bmpImage = new BitmapImage();
MemoryStream msImageStream = new MemoryStream();
msImageStream.Write(value, 0, value.Length);
bmpCardImage.BeginInit();
bmpCardImage.StreamSource = new MemoryStream(msImageStream.ToArray());
bmpCardImage.EndInit();
image.Source = bmpCardImage;
关于c# - 如何在 C# 中从数据库检索时将 varBinary 转换为图像或视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5623264/