Попытка получить растровую строку с сервера

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

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

и строковое растровое изображение, которое я получаю (предварительно декодировано): [2] Я ПРОШЕЛ ЭТО В КОМЕНТЫ, ПОТОМУ ЧТО Я НОВЫЙ ЗДЕСЬ, И ОНИ НЕ ПОЗВОЛЯЮТ МЕНЯ ПОСТАВИТЬ БОЛЬШЕ, ЧЕМ 1 ССЫЛКА

Я думаю, может быть, я не имею дело с чтением строки из php. При необходимости я могу вставить код, где я это делаю.

Спасибо за помощь, ребята!

[РЕДАКТИРОВАТЬ]

код для получения моей строки из 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();

Как только я разделил строку запятыми: (я получаю что-то вроде «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

Решение

Я реализовал аналогичный подход для получения изображений с PHP-сервера на Android с помощью bin2hex функция на стороне сервера. Давайте посмотрим код:

После получения шестнадцатеричной строки JSON мы преобразуем ее в ByteArray:

/**
* Converts a hexadecimal string to byte array.
*
* @param s String to convert.
* @return The result of conversion.
*/
public static byte[] hexStringToByteArray(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i+1), 16));
}
return data;
}

Затем создайте новый Bitmap из ByteArray:

/**
* Decode an immutable bitmap from the specified byte array.
*
* @param data byte array of compressed image data
* @param offset offset into imageData for where the decoder should begin parsing.
* @param length the number of bytes, beginning at offset, to parse
* @return The decoded bitmap, or null if the image could not be decoded.
*/
BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);

Растровое изображение результата можно загрузить в ImageView, используя imageView.setImageBitmap(Bitmap) метод.

0

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

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

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