目前我正在使用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)'
时,它不接受。请帮助我处理这种情况
答案 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);
}