xamarin.forms使用sqlite

时间:2016-12-22 12:03:19

标签: c# sqlite xamarin.forms azure-sql-database

目前我正在使用sqlite存储图像(使用ImageSource元素)。在我尝试存储之后,我正在从本地目录中读取文件 图像到sqlite但我无法存储图像。任何人都可以帮我存储。还有如何在xamarin.forms

中将图像源转换为字节

这里我的代码快照

Interface
 Task<Product> AddToDo(string title, string subtitle,ImageSource img);

Calling method
ImageFile = ImageSource.FromFile("Chinese_6_600_C.jpg");

await azureService.AddToDo(Title, Subtitle, ImageFile);


public async Task<Product> AddToDo(string title, string subtitle, ImageSource img)

{

await Initialize();

 var item = new Product     
{

Title=title,

Subtitle=subtitle,

 ImageFile= img

 };


//TODO 5: Insert item into todoTable

await todoTable.InsertAsync(item);

//Synchronize todos

await SyncToDos();

return item;

 }

这里我导入了nuget包'( Microsoft.WindowsAzure.MobileServices.SQLiteStore)',用于在sqlite和azure云存储之间存储数据。 当我将imagesource插入' (await todoTable.InsertAsync(item)'时,它不接受。请帮助我处理这种情况

1 个答案:

答案 0 :(得分:1)

而不是存储&amp;检索图像(byte [])作为blob从sqlite db转换为base64string并将图像作为字符串存储在sqlite中,同时检索转换接收到的base64string从sqlite到image(byte [])

Base64到位图:

public Bitmap Base64ToBitmap(String base64String)
{
    byte[] imageAsBytes = Base64.Decode(base64String, Base64Flags.Default);
    return BitmapFactory.DecodeByteArray(imageAsBytes, 0, imageAsBytes.Length);
}

Bitmap到Base64:

public String BitmapToBase64(Bitmap bitmap)
{
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    bitmap.Compress(Bitmap.CompressFormat.Png, 100, byteArrayOutputStream);
    byte[] byteArray = byteArrayOutputStream.ToByteArray();
    return Base64.EncodeToString(byteArray, Base64Flags.Default);
}