问题
i have a php page which return image from php page in json format
$result = mysql_query("SELECT image FROM image_table WHERE email_id = '$email'");
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);
}
which return me something like
{"success":1,"image_table":[{"image":"iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD\/gAIDAAAAA3NCSVQFBgUzC42AAAAgAElEQVR4nDS70Y8c2XXm+WXUiewTyYhi3GIGO4Nkkgx2J1tZraLMsptyU6sWRMGtdQte2dLsGB4NsLPQww4wuy8LP
when i use this in my class imageview dosent show my image....and asynctask activity continuesly running......
class LoadImage extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(MainActivityMap.this);
pDialog.setMessage("Loading Image. Please wait...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
protected String doInBackground(String... args) {
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("username", email));
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);
InputStream stream = new ByteArrayInputStream(Base64.decode(image.getBytes(), Base64.DEFAULT));
bmp=BitmapFactory.decodeStream(stream);
}
} else {
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String file_url) {
pDialog.dismiss();
ivProperty.setImageBitmap(bmp);
}
}
when i use this in my asuncktask....i have one more logcat result ..i.e
03-31 18:16:03.358: D/skia(2622): --- decoder->decode returned false
what is the issue and how to solve it......thx in advance
回答1:
Try this,
String strPicture;
for (int i = 0; i < address.length(); i++) {
JSONObject c = address.getJSONObject(i);
strPicture= c.getString(TAG_IMAGE);
byte bytePic[] = null;
try {
bytePic = Base64.decode(strPicture, Base64.DEFAULT);
} catch (Exception e) {
e.printStackTrace();
}
if (bytePic != null) {
ByteArrayInputStream imageStream = new ByteArrayInputStream(
bytePic);
Bitmap theImage = BitmapFactory.decodeStream(imageStream);
imageStream.reset();
imageView.setImageBitmap(theImage); //Setting image to the image view
}
}
来源:https://stackoverflow.com/questions/29369227/skia-decoder-decode-returned-false-when-download-image-and-display-in-imageview