How to save images to sqlite database

*爱你&永不变心* 提交于 2019-12-22 15:34:47

问题


In my classe I have a method that searches the image in the photo gallery and also receives the image taken from the camera of the mobile phone, I need now to save this image in the sqlite database. I am using a database field like BLOB, but not like serializing the image in bity [] or transforming in decode64 to write to the database.

I would like to know if anyone has any examples to pass on xaramin android I am posting the method that receives the image

 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 {

            }

        }

回答1:


Instead of storing & retrieving image(byte[]) as blob from sqlite db convert image to base64string and store image as string in sqlite and while retrieving convert received base64string from sqlite to image(byte[])

Base64 to Bitmap :

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

Bitmap to 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);
}


来源:https://stackoverflow.com/questions/43614282/how-to-save-images-to-sqlite-database

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!