Base64 String сохраняет только последнее изображение, снятое камерой - PullRequest
0 голосов
/ 18 июня 2020

почему Base64 кодирует только один массив байтов из byte [] ArrayList?

см. Мой код ниже:

 ArrayList<byte[]> stringImgArry = new ArrayList<byte[]>();

 bitmap = (Bitmap) data.getExtras().get("data");
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
        byte[] byteArray = stream.toByteArray();
        stringImgArry.add(byteArray);

  Log.d("LOG_TAG", " byteArray  " + byteArray);//[B@73c1473
        Log.d("LOG_TAG", " String_byteArray  " + stringImgArry);//[[B@73c1473, [B@d50868c]

        List<String> encodedImageList = new ArrayList<>();
        for (int i = 0; i < stringImgArry.size(); i ++) {
            encodedImageList.add(Base64.encodeToString(stringImgArry.get(i), Base64.DEFAULT));
        }

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
             ImgString = String.join("    NEXT IMAGE    ", encodedImageList);
        }

        Log.d("LOG_TAG", "Array  base64 image : " + ImgString);
        Log.d("LOG_TAG", "encoded Image List  : " + encodedImageList);
        Log.d("LOG_TAG", "Array  base64 image size  : " + encodedImageList.size());//2

, а затем сохраните ImgString в sqlite, как это

mDatabase.execSQL(insertSQL, new String[]{date, description, ImgString});

и моя база данных выглядит так: here i the sqlite structure

пожалуйста, помогите мне найти решение для кодирования Arraylist массива байтов с помощью Base64? 1st Logcat 2nd Logcat 3rd Logcat 4th Logcat 5th Logcat

1 Ответ

0 голосов
/ 18 июня 2020
List<String> encodedImageList = new ArrayList<>();
for (int i = 0; i < stringImgArry.size(); i ++) {
  encodedImageList.add(Base64.encodeToString(stringImgArry.get(i), Base64.DEFAULT));
}

Теперь encodedImageList содержит закодированную строку для каждого изображения.

Если вы хотите, чтобы это было как одно String со всеми ними, разделенными новой строкой, вы можете сделать

String string = String.join("\n", encodedImageList);

Или делайте что хотите со своим списком закодированных изображений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...