Почему я получаю 2 разных строки в кодировке base64 из одного изображения (Android Studio и Netbeans)? - PullRequest
0 голосов
/ 26 декабря 2018

Мне нужно преобразовать изображение, выбранное из галереи, в строку base64.Затем я передаю строку baase64 в качестве параметра для запроса API.Есть всего лишь одна проблема.Когда я использую NetBeans, это работает, когда я использую Android Studio, это не так.Я обнаружил, что проблема заключается в выводе строки base64.Я не знаю, почему, если я использую одно и то же изображение, результат будет другим.Может быть, проблема усугубляется, потому что я должен использовать тот же точный метод для чтения файла изображения ...?

Это мой код в Netbeans (работает):

    InputStream inputStream = new FileInputStream("testImage.jpg");
    byte[] bytes;
    byte[] buffer = new byte[8192];
    int bytesRead;
    ByteArrayOutputStream output = new ByteArrayOutputStream();
    try {
        while ((bytesRead = inputStream.read(buffer)) != -1) {
            output.write(buffer, 0, bytesRead);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    bytes = output.toByteArray();
    String encodedFile = Base64.getEncoder().encodeToString(bytes);

И это кодв Android Studio:

            Bitmap bitmap = ((BitmapDrawable) image.getDrawable()).getBitmap();
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
            byte[] imageData = baos.toByteArray();
            InputStream inputStream = getContentResolver().openInputStream(imageUri);

            byte[] buffer_new = new byte[8192];
            int bytesRead;
            ByteArrayOutputStream output = new ByteArrayOutputStream();
            try {
                while ((bytesRead = inputStream.read(buffer_new)) != -1) {
                    output.write(buffer_new, 0, bytesRead);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            bytes = output.toByteArray();
            String encodedImage = Base64.encodeToString(bytes,Base64.DEFAULT);
            Log.v("encodedImage", encodedImage);

Выходная строка почти одинакова только на первом символе .. затем они различаются .. с строкой, закодированной в Android Studio, я получаю эту ошибку, когда пытаюсь использоватьAPI.

BAD_ARGUMENTS:<key>
Error while parsing some arguments. This error may be caused by illegal type or length of argument.

Что я должен использовать, чтобы получить ту же строку base64?пс.в Netbeans изображение - это файл в той же папке проекта, в Android Studio пользователь может загрузить изображение из галереи.

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