Android_Virus Ответов: 0

Изображение, хранящееся в базе данных sqlite


изображение хранится в базе данных sqlite, но не извлекается в CircleimageView

Что я уже пробовал:

1. DatabaseHelper.class

public void insertImage(byte[] imageBytes) {

       SQLiteDatabase db = this.getReadableDatabase();
       ContentValues cv = new ContentValues();
       cv.put(IMAGE, imageBytes);
       db.insert(TABLE_NAME, null, cv);
   }

   public byte[] retreiveImageFromDB() {

       SQLiteDatabase db = this.getReadableDatabase();

       Cursor cur = db.query(true, TABLE_NAME, new String[]{IMAGE},
               null, null, null, null,
               COL_1 + " DESC", "1" );

       if (cur.moveToFirst()) {
           byte[] blob = cur.getBlob(cur.getColumnIndex("IMAGE"));
           cur.close();
           return blob;
       }
       cur.close();
       return null;
   }


2.Utils.class

public static byte[] getImageBytes(Bitmap bitmap) {
       ByteArrayOutputStream stream = new ByteArrayOutputStream();
       bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
       return stream.toByteArray();
   }

   public static Bitmap getImage(byte[] image) {
       return BitmapFactory.decodeByteArray(image, 0, image.length);
   }

   public static byte[] getBytes(InputStream inputStream) throws IOException {
       ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream();
       int bufferSize = 1024;
       byte[] buffer = new byte[bufferSize];

       int len = 0;
       while ((len = inputStream.read(buffer)) != -1) {
           byteBuffer.write(buffer, 0, len);
       }
       return byteBuffer.toByteArray();
   }


3.ProfileFragment.class


<pre>Boolean saveImageInDB(Uri selectedImageUri) {

        try {
            //databaseHelper.onOpen(null);
            InputStream iStream = getActivity().getContentResolver().openInputStream(selectedImageUri);
            byte[] inputData = Utils.getBytes(iStream);
            databaseHelper.insertImage(inputData);
            //databaseHelper.close();
            return true;
        } catch (IOException ioe) {
            Log.e(TAG, "<saveImageInDB> Error : " + ioe.getLocalizedMessage());
            //databaseHelper.close();
            return false;
        }
    }

    Boolean loadImageFromDB() {
        try {
            //databaseHelper.onOpen(null);
            byte[] bytes = databaseHelper.retreiveImageFromDB();
            //databaseHelper.close();
            // Show Image from DB in ImageView
            circleView.setImageBitmap(Utils.getImage(bytes));
            return true;
        } catch (Exception e) {
            Log.e(TAG, "<loadImageFromDB> Error : " + e.getLocalizedMessage());
           //databaseHelper.close();
            return false;
        }
    }

David Crow

В чем именно заключается проблема? Вы только что показали кучу кода без сопроводительного текста, подробно описывающего, в чем проблема, что вы пробовали или что (не) показывается. Есть ли какие-то исключения? Вы прошли через код с помощью отладчика?

ZurdoDev

Почему это не работает? Отладьте свой код.

Android_Virus

Проблема в том, когда я двигаюсь дальше HomeFragment.class и вернись приди к своему ProfileFragment.class изображение было автоматически удалено @David Crow

David Crow

- Проблема в том, когда я двигаюсь дальше. HomeFragment.class-да..."

Что именно означает "двигаться дальше" в контексте Java-кода?

"...изображение было автоматически удалено"

Откуда же?

Android_Virus

Изображение удалено из книги

Android_Virus

проблема решена мной
и еще одна ошибка произошла при смене моей фотографии тогда изменчивая фотография была изменена во втором аккаунте
Мин У меня есть 2 зарегистрированных аккаунта и я меняю фотографию в 1 аккаунте затем это также изменение во втором аккаунте

David Crow

В чем заключается ценность selectedImageUri перед вызовом insertImage()?

Если у вас должен быть только один аккаунт, может быть, это потому, что insertImage() это вызов insert() скорее, чем update()?

0 Ответов