Android: массив байтов для изображения имеет значение null при сохранении в SQLite

Я очень близок к этой работе. Я получаю изображение с камеры и сохраняю его в своей базе данных SQLite. Однако, когда я сохраняю его, я получаю эту ошибку. Массив байтов для изображения имеет значение null при сохранении. Почему? Как я могу это исправить?

E/AndroidRuntime: НЕИСПРАВНОЕ ИСКЛЮЧЕНИЕ: основной процесс: com.example.psa.stepbystep, PID: 16363 java.lang.NullPointerException: попытка получить длину нулевого массива в com.example.psa.stepbystep.Walk.writeToParcel(Walk.java :161) на android.os.Parcel.writeParcelable(Parcel.java:1730) на android.os.Parcel.writeValue(Parcel.java:1636) на android.os.Parcel.writeArrayMapInternal(Parcel.java:777) на android .os.BaseBundle.writeToParcelInner(BaseBundle.java:1506)

Прогулка содержит посылку

public Walk(Parcel in) {
        this._photo = new byte[in.readInt()];
        in.readByteArray(_photo);
    }

public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(_photo.length);
        dest.writeByteArray(_photo);
    }

У WalkPhoto есть это для преобразования

 //Convert from bitmap to byte array
    public static byte[] getBytes(Bitmap bitmap) {
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 0, stream);
        return stream.toByteArray();
    }

    //Convert from byte array to bitmap
    public static Bitmap getImage(byte[] image) {
        return BitmapFactory.decodeByteArray(image, 0, image.length);
    }

WalkPhoto также имеет это для хранения изображения в базе данных.

     if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
            Bundle extras = data.getExtras();
            Bitmap imageBitmap = (Bitmap) extras.get("data");
            ImageView imageview = findViewById(R.id.imageView);
            imageview.setImageBitmap(imageBitmap);

            //Bitmap to bytes for database
            byte[] photo = getBytes(imageBitmap);

             DatabaseHandler mydb = new DatabaseHandler(getApplicationContext());

            Walk walk = new Walk(photo);

            mydb.addWalk(walk);
}

person RockOn365    schedule 14.04.2018    source источник
comment
Вы можете использовать blob для хранения изображения, как указано в этом сообщении: stackoverflow.com/a/9357943/5455940   -  person AbuBakar Siddiq    schedule 15.04.2018
comment
@AbuBakarSiddiq, что такое insertStatement_logo в этом примере?   -  person RockOn365    schedule 15.04.2018


Ответы (1)