Android — получение растрового изображения из переполнения стека

Я загружаю растровое изображение String как «Изображение профиля пользователя». Загрузка на сервер с использованием php — это все хорошо, и загрузка с сервера тоже. Дело в том, что когда я просматриваю строку растрового изображения, я вижу небольшие различия между этими 2 растровыми изображениями и могу декодировать загруженное. IDK, если я правильно управляю строкой.

Строковое растровое изображение, которое я отправляю: 1

Строковое растровое изображение, которое я получаю (рис. В комментариях, я не могу разместить здесь более 1 ссылки) [2]

код для получения моей строки из php:

    StringBuilder sb = new StringBuilder();
reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
sb.append(line + "");
}
line = sb.toString();
String[] kvPairs = line.split(",");

Как только я разделил строку запятыми: (я получаю что-то вроде «name»: «john», «age» = «5», …, «bitstringImag» = «/ 9j / 4AA ..»)

Я получаю значение Bitmap String:

String[] bitmstrIn = kvPairs[5].split(":"); //separating the key from the value
String[] bitmstrIn2 = bitmstrIn[1].split("\\}");  //erasing last key in the String
String bitStr = bitmstrIn2[0].replaceAll("\"", ""); //removing the added (i dont know why) backslash.
String biStrFin = bitStr.replaceAll("\\\\","");//removing the added (i dont know why) backslash.

и результат в bitStrFin — тот, который я вставил в комментарии.

Если вы знаете какой-нибудь лучший способ сделать это, пожалуйста, скажите мне, что я боролся с этим в течение долгого времени!
Спасибо за помощь, ребята

0

Решение

Используйте строку Base64. Ссылка на сайт

В моем случае это было лучшее решение и работает очень хорошо. Я конвертировал изображения через php и показываю их в нашем приложении.

Java: декодировать

public static Bitmap getBitmapByString(String encodedString){
byte[] imageBytes = Base64.decode(encodedString, Base64.NO_WRAP);
return BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);
}

Java: кодировать

public static String getStringByBitmap(Bitmap bitmap){
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(bitmap.getByteCount());
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
byte[] imageBytes = outputStream.toByteArray();
try {
outputStream.close();
} catch(IOException e) {
e.printStackTrace();
}
return Base64.encodeToString(imageBytes, Base64.NO_WRAP);
}

PHP:

$base64 = base64_encode($imagedata);
$imagedata = base64_decode($base64);

Извините за очень поздний ответ.
Это функция Java в моем проекте и функция PHP, которую я использовал для создания тестовых данных.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector