Я разрабатываю приложение, которое загружает изображение с php-сервера и отображает изображение в представлении изображения. но когда я получаю изображение с php-страницы
if (!empty($result)) { if (mysql_num_rows($result) > 0) { $result = mysql_fetch_array($result); $user = array(); $user["image"] = base64_encode($result["image"]); $response["success"] = 1; $response["image_table"] = array(); array_push($response["image_table"], $user); echo json_encode($response); } else { $response["success"] = 0; $response["message"] = "No Image found"; echo json_encode($response); }
это дает мне ответ json, как это
03-30 04:43:44.013: D/Image:(2770): {"success":1,"image_table": [{"image":"\/9j\/4VeRRXhpZgAASUkqAAgAAAAMAAABBAABAAAA.......... 03-30 04:43:44.253: D/skia(2770): --- decoder->decode returned false
im декодирует эту строку изображения для растрового изображения, подобного этому ….
json= jsonParser.makeHttpRequest(url_img_address, "GET", params); Log.d("Image: ", json.toString()); try { int success = json.getInt(TAG_SUCCESS); if (success == 1) { address = json.getJSONArray(TAG_IMAGE_TABLE); for (int i = 0; i < address.length(); i++) { JSONObject c = address.getJSONObject(i); image = c.getString(TAG_IMAGE); byte[] dwimage = Base64.decode(image.getBytes()); System.out.println(dwimage); bmp = BitmapFactory.decodeByteArray(dwimage, 0, dwimage.length); } } else { } } catch (JSONException | IOException e) { e.printStackTrace(); }
и im, используя этот bm для onotherclass, который устанавливает bmp для просмотра изображений
ivProperty.setImageBitmap(bmp);
но он дозирует отображение чего-либо …… моя задача задачи asynck не закончена, и она продолжает работать … мой вопрос в том, как отображать BMP для изображения и почему моя asyncktask не закончена …….. thx заранее ….
Вам нужно использовать двоичное декодирование с использованием base64-декодирования, и вы получите изображение в виде растрового изображения.
byte[] decodedString = Base64.decode(encodedImage, Base64.DEFAULT); Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);