I have used Xamarin Media Plugin for image upload and i want to save that image in Sqlite and retrieve it back from Sqlite. How can i do that ?
Store: Convert the Image bitmap into a Base64String and store it to SQLite.
public static string Base64Encode(string plainText) {
  var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
  return System.Convert.ToBase64String(plainTextBytes);
}
Retrieve: Fetch the Base64String and convert that to Bitmap again.
public static string Base64Decode(string base64EncodedData) {
  var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData);
  return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
}
And how to select image from gallery and save to sql database in xamarin -- if like this, where I to implement these Base64Encode?
using Plugin.Media;
using Plugin.Media.Abstractions;
using System;
using Xamarin.Forms;
using SQLite;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace PersonListData
{
    public class Person
    {   
        [PrimaryKey, AutoIncrement]
        public int IdSis { get; set; }
        public string NamePerson { get; set; }
        public byte[] PersonImg { get; set; }
    }
    
    async void SaveOnClik(object sender, EventArgs e)
    {
        var person = (Person)BindingContext;
        await App.Database.SavePersonAsync(person);
        await Navigation.PopAsync();
    }
    async void PickPhotos(object sender, EventArgs e)
    {
        if (CrossMedia.Current.IsPickPhotoSupported)
        {
            var file = await CrossMedia.Current.PickPhotoAsync(new Plugin.Media.Abstractions.PickMediaOptions
            {
                PhotoSize = PhotoSize.Medium,
            });
            if (file == null)
                return;
            image.Source = ImageSource.FromStream(() =>
            {
                var stream = file.GetStream();
                file.Dispose();
                return stream;
            });          
        }
        else
        {
            await DisplayAlert("Image error", ":( Hcant do thid.", "Ok");
            return;
        }
    }
    readonly SQLiteAsyncConnection _database;
    public DataPerson(string dbPath)
    {
        _database = new SQLiteAsyncConnection(dbPath);
        _database.CreateTableAsync<Person>().Wait();
    }
    public Task<List<Person>> GetPersonListAsync()
    {
        return _database.Table<Person>().ToListAsync();
    }
    public Task<Person> GetPersonAsync(int id)
    {
        return _database.Table<Person>()
        .Where(i => i.IdSis == id)
        .FirstOrDefaultAsync();
    }
    public Task<int> SavePersonAsync(Person person)
    {
        if (person.IdSis != 0)
        {
            return _database.UpdateAsync(person);
        }
        else
        {
            return _database.InsertAsync(person);
        }
    }
    public Task<int> DeletePersonAsync(Person person)
    {
        return _database.DeleteAsync(person);
    }
}
I am confused in this placement
 
    