2015-03-27 10 views
7

ich ein Bild in Bild Tabellenfeld habe, und ich möchte das Bild in meiner app verwenden meine PHP-Seite istBild Abrufen von mysql-php (android)

$user = array(); 
$user["image"] = base64_encode($result["image"]); 
// success 
$response["success"] = 1; 

// user node 
$response["image_table"] = array(); 

array_push($response["image_table"], $user); 

, wenn ich das Array in meinem app ich benutze diese ...

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); 

} 

es mir wie

json response: {"success":1,"image_table":  [{"image":"iVBORw0KGgoAAA...................." 

Folge gibt, wenn ich dieses Bild in meiner Bildansicht verwenden Ich benutze diese wie

ImageView ivProperty = ((ImageView) myContentView.findViewById(R.id.image_property)); 

byte[] decodedString; 
try { 
     decodedString = Base64.decode(image, Base64.URL_SAFE); 
     Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 
     ivProperty.setImageBitmap(decodedByte); 
    } catch (IOException e) { 
// TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

aber es gibt mir Null-Zeiger Ausnahme

meine logcat Werte sind

03-27 10:10:44.355: E/AndroidRuntime(2391): java.lang.NullPointerException: Input string was null. 
03-27 10:10:44.355: E/AndroidRuntime(2391):  at com.big_property_info.Base64.decode(Base64.java:1242) 
03-27 10:10:44.355: E/AndroidRuntime(2391):  at com.big_property_info.MainActivityMap$GeocoderTask$2.getInfoContents(MainActivityMap.java:314) 

Wie die NULL-Zeiger-Ausnahme lösen ..., wenn im Bild String empfangen .. ...

+0

Hilf mir Freund Ich brauche deine Hilfe ....... – Tufan

+0

't gibt mir das Ergebnis wie'. Was druckst du dort? Welches Ergebnis? Lege die Log-Anweisung zumindest in deinen Code, damit wir sehen können, was du druckst. – greenapps

+0

Hier ist mein Logcat – Tufan

Antwort

1

Sie können Picasso zum Laden von Bildern verwenden. Zum Beispiel:

Picasso.with(getActivity()).load(url).into(imageView); 
1

Überprüfen Sie this. Seine Bild-Downloader-Bibliothek und einfach zu implementieren.

DisplayImageOptions imageOptions; 
ImageLoader imageLoader; 

    imageOptions = new DisplayImageOptions.Builder().showImageForEmptyUri(R.drawable 
        .logo_image).showImageOnFail(R.drawable.logo_image).cacheInMemory(true) 
        .cacheOnDisk(true) 
        .build(); 
      imageLoader = ImageLoader.getInstance(); 
      imageLoader.init(ImageLoaderConfiguration.createDefault(getActivity())); 

imageLoader.displayImage(uri, imageView, imageOptions); 
//Where uri is url of imageview stored in server. imageview is Imageview in which you want to show image. 

Auschecken Link für Dokument in GitHub.

0

Sie müssen Ihre Zeichenfolge überprüfen, ob sie null ist oder nicht.

ImageView ivProperty = ((ImageView) myContentView.findViewById(R.id.image_property)); 

    byte[] decodedString; 
    try { 
if (image!=null&&!image.equalsIgnoreCase("")) { 
       decodedString = Base64.decode(image, Base64.URL_SAFE); 
        Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 
        ivProperty.setImageBitmap(decodedByte); 
     } 
     } catch (IOException e) { 
    // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
0

Vielleicht Problem aufgrund characterset verursacht, die für die Codierung und Decodierung in PHP und android

Verwenden desselben Characterset für beide verwendet wird, endet zum Kodieren und Dekodieren von Bilddaten

beziehen sich auf diesen Link zu lösen Ihr Problem https://stackoverflow.com/a/15156991/4985541

0

Wenn Sie Bild in Base64-String bekommen Sie es so dekodieren kann,

byte[] data = Base64.decode(base64, Base64.DEFAULT); 
String text = new String(data, "UTF-8"); 

Oder Sie können den Link auch vom Server abrufen und den unten stehenden Code verwenden, um ihn in der Bildansicht anzuzeigen.

if (imageUrl != null && isImageUrl) { 
    Picasso.with(getApplicationContext()).load(Constants.IMG_URL + imageUrl).resize(150, 100).centerInside().into(ivActionHome); 
}