una tipo studio que imagen guardar datos campo c# xamarin xamarin.android xamarin.forms

c# - tipo - sqlite blob android studio



Cómo guardar imágenes en la base de datos sqlite (1)

En lugar de almacenar y recuperar imágenes (byte []) como blob desde sqlite db convertir imágenes a base64string y almacenar imágenes como cadenas en sqlite y al recuperar convert recibido base64string desde sqlite a image (byte [])

Base64 a mapa de bits:

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

Mapa de bits a 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); }

En mi clase tengo un método que busca la imagen en la galería de fotos y también recibe la imagen tomada desde la cámara del teléfono móvil, ahora necesito guardar esta imagen en la base de datos sqlite. Estoy usando un campo de base de datos como BLOB, pero no como la serialización de la imagen en bity [] o la transformación en decode64 para escribir en la base de datos.

Me gustaría saber si alguien tiene algún ejemplo para transmitir xaramin android. Estoy publicando el método que recibe la imagen.

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) { base.OnActivityResult(requestCode, resultCode, data); // Make it available in the gallery try { Intent mediaScanIntent = new Intent(Intent.ActionMediaScannerScanFile); Uri contentUri = Uri.FromFile(App._file); mediaScanIntent.SetData(contentUri); SendBroadcast(mediaScanIntent); // Display in ImageView. We will resize the bitmap to fit the display. // Loading the full sized image will consume to much memory // and cause the application to crash. int height = Resources.DisplayMetrics.HeightPixels; int width = imageView.Height; App.bitmap = App._file.Path.LoadAndResizeBitmap(width, height); if (App.bitmap != null) { imageView.SetImageBitmap(App.bitmap); App.bitmap = null; } // Dispose of the Java side bitmap. GC.Collect(); } catch { } try { if (resultCode == Result.Ok) { var imageView = FindViewById<ImageView>(Resource.Id.imageView1); imageView.SetImageURI(data.Data); } } catch { } }