Мне нужно преобразовать изображение, выбранное из галереи, в строку 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 пользователь может загрузить изображение из галереи.