2016-11-02 11 views
0

MySQLデータベースから画像をダウンロードして、画像をAndroid ImageViewに表示したいが表示されない。以下は私のJavaファイルとPHPファイルのコードを含んでいます。エラーはありませんが、私のlogcatでは工場出荷時にnullが返されます。私はどこに間違っているのか分かりません。前もって感謝します。画像がアンドロイドに表示されない

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フォルダに格納する必要があります.UUIDというGUIDを使用して名前を変更した後、そのファイル名のimage_name列をデータベースに格納し、HTMLを使用して単純にそのファイルを参照する必要があります。 非常に特殊な理由がない限り、データベース内に画像を保存するのが最悪の方法ですが、これまで誰も見たことがありません。 – TravisO

答えて

1

サーバからイメージをロードするため。 イメージ読み込みAPIを使用できます。 グライド、ピカソ、ユニバーサルイメージローダーなど。

グライドはGoogleが推奨しています。 source

あなたは簡単に統合してメモリを回避し、ローディングの問題を緩和することができます。

など:ので、それを楽しむ

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

ハッピーキャッディング。

関連する問題