@Romario21

Android режется Base64 строка?

Товарищи подскажите в чем засада?
Собственно нужно постом отправить json на сервер одно из полей которого фотография в Base64.
Проблема в том, что я получаю только часть картинки в Base64 строке.

Картинка->Base64
public static String encodeTobase64(Bitmap image) {
    Bitmap immagex = image;
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    immagex.compress(Bitmap.CompressFormat.PNG, 100, baos);
    profileImage.setImageBitmap(Bitmap.createScaledBitmap(immagex, 120, 120, false));

    byte[] b = baos.toByteArray();
    String imageEncoded = Base64.encodeToString(profileImage, Base64.DEFAULT);
    return imageEncoded;
}


Собственно на выходе я получаю только часть фотографии в Base64 строке. Если уменьшить разрешение до 64х64. То все нормально.
Еще такой момент, получил Base64 строку используя онлайн конвертер. Попытался присвоить значение String testBase64=".........", получил сообщение от IDE, что мол размер строки большой, присвоить типо не могу. Картинка была ~500кб в jpeg формате. Это тоже не понятно, т.к теоретически в String влезает ~ 2 147 483 647 символов

Программа OutOfMemory не выдает
  • Вопрос задан
  • 125 просмотров
Решения вопроса 2
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Есть ограничение на длину константной строки - 64кб, если мне не изменяет память.
Постом нужно отправлять multipart entity, а не json.

А так конвертация должна работать правильно.
Ответ написан
TheRonCronix
@TheRonCronix
Если код на стороне приемника может быть изменен, то разбейте данные на куски не превышающие 64КБ и в таком виде можете отсылать в json, или не используйте json.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы