В настоящее время я кодирую и декодирую изображения на Base64. Я преодолел исходную проблему с OOM с использованием потоков для кодирования изображений в строки.
Моя проблема в том, что я не могу понять, как добавить несколько закодированных строк Base64 для изображений с несколькими разрешениями (5620 x 3747 - 4.92MB или 3264 x 1836 - 1.35MB) в объект JSON через Gson. В настоящее время Gson выбрасывает исключение OOM только с 2 строками Base64 из изображения 5312 x 2988 - 4.95 МБ.
Я понимаю, что андроид может только сэкономить 16/20 Мб для каждого приложения, поэтому это преобразование должно быть намного выше предела.
Как написать строку Base64 в потоке для объекта JSON, который будет содержать конкретные значения, необходимые для публикации на моем сервере?
Было бы проще изменить мой сервер, чтобы принять запрос Multi-Part вместо POJO на основе JSON с несколькими Base64 Strings? В настоящее время я использую Volley, и нет официального запроса Multi-Part, а также потокового ввода-вывода.
Если это вопрос сжатия, сколько сжатий я должен применить к изображению перед кодированием в строку Base64? Я в идеале хочу потерять практически любое качество, но иметь оптимальные уровни сжатия.
Бит больше информации
Я загружаю несколько изображений с различными разрешениями, так как это тест на совместимость. Например, все изображения, которые я отправляю, были взяты на устройствах с низким разрешением и чрезвычайно высокого разрешения, так как мое приложение использует эти изображения для функциональности. Я пытаюсь доказать, что любое изображение (в определенной степени, в основном изображения, снятые на мобильных устройствах) может обрабатываться моим приложением.
Я понимаю, что некоторые изображения могут быть настолько большими, что их загрузка в память приведет к исключениям. Это то, что я попытаюсь обработать позже.
В некоторых случаях изображения, которые будут загружены, могут занимать от 1 до 200.
Я пытаюсь найти наиболее оптимальное решение, которое будет хорошо масштабироваться.