我最近刚开始研究WP7,在用SQLite存取图片时遇到个问题,希望高手们指点。
图片转换成二进制存到SQLite时是 byte[14361],读出来时却成了byte[13],数据库里图片存储格式是Blob。Why?
这是我的代码:
//把图片转换成二进制存入sqlite
private byte[] SetPicture()
{
BitmapImage bit = new BitmapImage(new Uri("image.jpg", UriKind.Relative));
Image image = new Image();
image.Source = bit;
this.image1.Source = bit;
WriteableBitmap bmp = new WriteableBitmap(image.Source as BitmapSource);
byte[] byteArray;
using (MemoryStream stream = new MemoryStream())
{
bmp.SaveJpeg(stream, bmp.PixelWidth, bmp.PixelHeight, 0, 100);
byteArray = stream.ToArray();
}
return byteArray;
}
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
SQLiteConnection mySqliteDB = new SQLiteConnection("SQLiteDB");
mySqliteDB.Open();
SQLiteCommand cmd = mySqliteDB.CreateCommand("select*from FriendTable");
IEnumerable<Friend> list = cmd.ExecuteQuery<Friend>();
List<FriendPct> listfd = new List<FriendPct>();
foreach(Friend item in list.ToList())
{
FriendPct fp = new FriendPct();
fp.ID = item.ID;
fp.Name=item.Name;
fp.Phone = item.Phone;
fp.Picture = GetPath(item.Picture);
fp.Class = item.Class;
fp.Firsttime = item.Firsttime;
fp.Lasttime = item.Lasttime;
fp.Callcount = item.Callcount;
fp.Grade = item.Grade;
fp.Popcount = item.Popcount;
listfd.Add(fp);
}
this.Files.ItemsSource = listfd;
}
//二进制数组转图片
public static Image GetPath(byte[] b)
{
try
{
BitmapImage bit = new BitmapImage();
Stream ms = new MemoryStream(b);
bit.SetSource(ms);
Image img = new Image();
img.Source = bit;
ms.Flush();
ms.Close();
return img;
}
catch (Exception ex)
{
return null;
}
}
上面IEnumerable<Friend> list。。。。list中返回的Picture为什么是byte[13]呢?
转载于:https://www.cnblogs.com/htfucc/archive/2012/08/02/2620521.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!