2016-11-02 121 views
0

我想從MySQL數據庫下載圖像並在Android ImageView中顯示圖像,但沒有顯示圖像。下面我已經包含了我的java文件和php文件的代碼。沒有錯誤,但在我的logcat中,我得到的工廠返回null。我找不到我要去的地方。提前致謝。圖像沒有在android中顯示

import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.util.Base64; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.net.MalformedURLException; 
import java.net.URL; 

/** 
* Created by GIOVANI on 10/19/2016. 
*/ 

public class GetAllImages { 

    public static String[] imageURLs; 
    public static Bitmap[] bitmaps; 

    public static final String JSON_ARRAY="result"; 
    public static final String IMAGE_URL = "url"; 
    private String json; 
    private JSONArray urls; 

    public GetAllImages(String json){ 
     this.json = json; 
     try { 
      JSONObject jsonObject = new JSONObject(json); 
      urls = jsonObject.getJSONArray(JSON_ARRAY); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 

    private Bitmap getImage(JSONObject jo){ 
     URL url = null; 
     Bitmap image = null; 

     try { 
      url = new URL(jo.getString(IMAGE_URL)); 
      image = BitmapFactory.decodeStream(url.openConnection().getInputStream()); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     return image; 

    } 

    public void getAllImages() throws JSONException { 
     bitmaps = new Bitmap[urls.length()]; 

     imageURLs = new String[urls.length()]; 

     for(int i=0;i<urls.length();i++){ 
      imageURLs[i] = urls.getJSONObject(i).getString(IMAGE_URL); 
      JSONObject jsonObject = urls.getJSONObject(i); 
      bitmaps[i]=getImage(jsonObject); 
     } 
    } 


} 

,這是我的PHP代碼:

<?php 

//Importing database 
require_once('dbConnect.php'); 

$sql = "SELECT * FROM foto "; 
//result 
$r = mysqli_query($con,$sql); 

$result = array(); 

while($row = mysqli_fetch_array($r)){ 
array_push($result,array("id"=>$row['id'], 
"image"=>$row['image'], 
"judul"=>$row['judul'] 
)); 
} 

//Tampilkan dalam format json 
echo json_encode(array('result'=>$result)); 
mysqli_close($con); 
?> 
+0

請編輯您的問題,包括您的logcat。 – buczek

+0

如果您沒有特殊原因,請勿將圖像存儲在數據庫中。你應該將它們存儲在一個web文件夾中,可能用一個GUID aUUID重命名,然後在你的數據庫中有一個帶有該文件名的image_name列,然後通過HTML指向它。 將數據存儲在數據庫中是最糟糕的方法,除非你有一個非常特殊的原因,但我從來沒有見過這種情況下的任何人。 – TravisO

回答

1

從服務器加載圖像。 你可以使用任何圖像加載API。比如 Glide或Picasso或Universal Image Loader。

Glide是由Google推薦的。 source

您可以輕鬆地整合並避免一些內存和緩慢加載問題。

像:

Picasso.with(this) 
    .load("http://nuuneoi.com/uploads/source/playstore/cover.jpg") 
    .fit() 
    .centerCrop() 
    .into(ivImgPicasso); 

所以喜歡它。

Happy Coading。