Я загружаю растровое изображение 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 — тот, который я вставил в комментарии.
Если вы знаете какой-нибудь лучший способ сделать это, пожалуйста, скажите мне, что я боролся с этим в течение долгого времени!
Спасибо за помощь, ребята
Используйте строку 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, которую я использовал для создания тестовых данных.
Других решений пока нет …