Не удается сохранить изображения с высоким разрешением в базу данных sqlite как blob

Можно ли сохранить большие изображения в базу данных? Если нет, есть ли более эффективный способ сохранить изображение в базе данных sqlite? Я могу сохранять и извлекать в свою базу данных хранилища изображений размером менее 1 МБ, но если он выходит за рамки этого, приложение вылетает, когда я пытаюсь их сохранить.

вот мой код:

       @Override
    public void onActivityResult( int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (resultCode == Activity.RESULT_OK){
            Uri targetUri = data.getData();
            picture_location = targetUri.toString();
            textTargetUri.setText(targetUri.toString());
            Bitmap bitmap;
            try {

                bitmap = BitmapFactory.decodeStream(getActivity().getContentResolver().openInputStream(targetUri));  
                ByteArrayOutputStream stream = new ByteArrayOutputStream();
                bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
                byte[] byteArray = stream.toByteArray();
                loginDataBaseAdapter.insertPhoto(byteArray);
                showpic();


            } 
            catch (FileNotFoundException e){

                e.printStackTrace();
            }

        }   
    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub

    }

    public void showpic() {

        LoginDataBaseAdapter db = loginDataBaseAdapter.open();
         boolean emptytab = false;
         boolean empty = db.checkPic(null, emptytab);

        //Cursor cursor = loginDataBaseAdapter.fetchProfileImageFromDatabase();  

         if(empty==false)  
         {  
             Cursor cursor = loginDataBaseAdapter.fetchProfileImageFromDatabase();
             cursor.moveToFirst();
                   byte[] data = cursor.getBlob(cursor.getColumnIndex("Path"));  
                    ByteArrayInputStream imageStream = new ByteArrayInputStream(data);  
                    Bitmap theImage = BitmapFactory.decodeStream(imageStream);  
                    targetImage.setImageBitmap(theImage);  
            cursor.close(); 
                }  





        } 

0 ответов

Другие вопросы по тегам