Intereting Posts
Инструменты ListView: listitem не работает в android studio 2.2 стабильный канал Как обрабатывать onContextItemSelected в операции с несколькими фрагментами? Сложность строк GridView: как сделать высоту строки подходящей для самого высокого элемента? Как создать пользовательскую панель поиска в android? Проблема с DexIndexOverflowException после обновления до последней библиотеки приложений и поддержки Плененный портал на Android-устройстве Android: приложение несовместимо с Huawei? Как получить любое фоновое представление приложения Использование статуса в Android Как позволить TextView иметь несколько строк? Как я могу прокрутить список ListView? Как ограничить скорость сети Android для тестирования Android – Как получить список параметров AudioManager / AudioSystem Как я могу воспользоваться кнопкой «Очистить кеш» от Android Надежный способ узнать, когда уходит в отставку Android-клавиатура (обратный вызов, который работает на каждом телефоне) Получите угол наклона от акселерометра андроида

Как преобразовать растровое изображение в PNG, а затем в base64 в Android?

Как следует из названия, я пытаюсь заставить пользователя моего приложения Android выбрать изображение с его устройства (сделано), затем я хочу масштабировать изображение (сделать), сжать / преобразовать изображение в png и отправить его К API как строка base64.

Поэтому я сейчас изменяю размер изображения так:

options.inSampleSize = calculateInSampleSize(options, MAX_IMAGE_DIMENSION, MAX_IMAGE_DIMENSION); options.inJustDecodeBounds = false; Bitmap bitmap = BitmapFactory.decodeFile(path, options); 

У меня тогда есть растровое изображение, которое я хочу преобразовать в PNG, а оттуда в base64. Я нашел пример кода для преобразования в PNG и сохранения его на устройстве здесь .

 try { FileOutputStream out = new FileOutputStream(filename); bmp.compress(Bitmap.CompressFormat.PNG, 90, out); out.close(); } catch (Exception e) { e.printStackTrace(); } 

Проблема в том, что я не хочу сохранять изображение. Я просто хочу сохранить его в памяти как PNG, а затем преобразовать его дальше в строку base64.

Кто-нибудь знает, как я могу преобразовать изображение в png и сохранить его в переменной таким образом, или даже лучше, немедленно преобразовать его в base64? Все советы приветствуются!

Solutions Collecting From Web of "Как преобразовать растровое изображение в PNG, а затем в base64 в Android?"

Попробуйте это преобразовать bitmap в png:

  bitmap.compress(Bitmap.CompressFormat.PNG, quality, outStream); 

Проверьте документацию метода .

Вы можете напрямую преобразовать bitmap в Base64. Используйте это для кодирования и декодирования от и до Base64.

 public static String encodeToBase64(Bitmap image) { Bitmap immagex=image; ByteArrayOutputStream baos = new ByteArrayOutputStream(); immagex.compress(Bitmap.CompressFormat.JPEG, 100, baos); byte[] b = baos.toByteArray(); String imageEncoded = Base64.encodeToString(b, Base64.DEFAULT); Log.e("LOOK", imageEncoded); return imageEncoded; } public static Bitmap decodeBase64(String input) { byte[] decodedByte = Base64.decode(input, 0); return BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length); }