WPF将图片存入数据库再从数据库获取显示

前几天在MSDN论坛上有人问了这个问题,写了一个示例程序和大家分享一下。WPF中如何将图片存入数据库,在从数据库中将图片信息显示在Image控件上。

将图片存入数据库中,和一般的做法一样,将图片文件保存成字节流。在SQL2005以上的版本有Image类型可以用来保存字节数组变量。

因为需要将图片保存至数据库,必须取得图片的Stream, 在设置Image控件的Srouce属性应该赋值为图片的Steram。

BitmapImage bitmapImage;
bitmapImage = new BitmapImage();

bitmapImage.BeginInit();

bitmapImage.StreamSource = System.IO.File.OpenRead(@"E:\2.jpg");

bitmapImage.EndInit();

image.Source = bitmapImage;//image是XAML页面上定义的Image控件

这样一来的话我们就能很容易的获取需要保存数据库图片的流。

首先定义一个字节数组,数组的长度和图片流的长度一致,然后将流中的内容读取至字节数组

byte[] imageData = new byte[bitmapImage.StreamSource.Length];

// now, you have get the image bytes array, and you can store it to SQl Server

bitmapImage.StreamSource.Seek(0, System.IO.SeekOrigin.Begin);//very important, it should be set to the start of the stream

bitmapImage.StreamSource.Read(imageData, 0, imageData.Length);

OK,一面所要做的工作就是将数据保存至数据库。

从数据库中读取数据然后加载到Image控件也很简单

#region read the image from a bytes array

System.IO.MemoryStream ms = new System.IO.MemoryStream(imageData);//imageData是从数据库中读取出来的字节数组

ms.Seek(0, System.IO.SeekOrigin.Begin);



BitmapImage newBitmapImage = new BitmapImage();

newBitmapImage.BeginInit();

newBitmapImage.StreamSource = ms;

newBitmapImage.EndInit();

image2.Source = newBitmapImage;

#endregion

知识共享许可协议
《WPF将图片存入数据库再从数据库获取显示》 常伟华 创作。
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议 | 3.0 中国大陆许可协议进行许可。

站内公告

A PHP Error was encountered

Severity: Core Warning

Message: PHP Startup: zip: Unable to initialize module Module compiled with module API=20060613 PHP compiled with module API=20090626 These options need to match

Filename: Unknown

Line Number: 0

Backtrace: