从(sqlite数据库中读取Data(blob),并将他转换成jpg。

因为读入的是jp2格式的数据,.Net不支持,因此载了FreeImage的库。具体步骤如下:

  1. 读出blob后转换成byte[]
  1. 由byte[]生成MemoryStream
  1. 由MemoryStream生成FIBITMAP(载了FreeImage的库)
  1. 将FIBITMAP保存成jpg文件

代码如下:

           

1 byte[] blob = new byte[200];
2
3 using (var connection = new SQLiteConnection(@"Data Source=database"))
4
5 using (var command = new SQLiteCommand("SELECT * FROM pic", connection))
6
7 {
8
9 connection.Open();
10
11 command.ExecuteNonQuery();
12
13 using (var reader = command.ExecuteReader())
14
15 {
16 while (reader.Read())
17 {
18 blob = (byte[])reader["Data"];
19
20 //byte[] buffer = GetBytes(reader);
21
22 MemoryStream ms = new MemoryStream(blob);
23
24 FIBITMAP dib = FreeImage.LoadFromStream(ms);
25
26 if (dib.IsNull)
27
28 {
29 continue;
30 }
31
32 string jpgName = getJpgName();
33
34 FreeImage.Save(FREE_IMAGE_FORMAT.FIF_JPEG, dib, jpgName, FREE_IMAGE_SAVE_FLAGS.JPEG_QUALITYNORMAL);
35
36 }
37
38 }
39
40
41
42 }

Posted on 2011-02-24 20:02  cdbean  阅读(835)  评论(1编辑  收藏  举报