2012-04-21 172 views
1

我在phpmyadmin命名的文章中创建了一个数据库,其中包含有关文章和图像(存储为blob)的信息。我能够从数据库中获取数据并将其显示在android列表视图中,但我没有得到如何从数据库中检索blob图像,并在android list view中显示它以及相应的文章信息..请帮助我..我做了很多谷歌搜索,但我没有做.. 教程或任何代码发布的任何链接将是非常greatfull ...我需要这个为我的项目.. 在此先感谢:)从mysql数据库中检索blob图像并在android listview中显示

我的PHP代码 -

<?php 
header('Content-type: application/json'); 
mysql_query('SET CHARACTER SET utf8'); 
mysql_connect("localhost","root",""); 
mysql_select_db("reader"); 
$id=$_REQUEST['keyword']; 
$id1=(int)$id; 
$sql=mysql_query("SELECT * FROM article a WHERE a.a_id='{$id}'"); 
while($row=mysql_fetch_assoc($sql)) 
{ 
$row['a_thumbnail']=base64_encode($row['a_thumbnail']); 
$row1= array_slice($row, 0, 2); 
$row_slice=array_slice($row,2); 
$output2=array_map('utf8_encode', $row_slice); 
$output[]=array_merge((array)$row1, (array)$output2); 
} 
print(json_encode($output)); 
mysql_close(); 
?> 

Java代码我写来获取图像是 -

public class SearchByLikeCount extends ListActivity { 
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>(); 

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main2); 
     String result = ""; 
     InputStream is= null; 
     try{ 
       HttpClient httpclient = new DefaultHttpClient(); 
       HttpGet httpget = new HttpGet("http://10.0.2.2/likeCountsearch.php"); 
       HttpResponse response = httpclient.execute(httpget); 
       HttpEntity entity = response.getEntity(); 
       is = entity.getContent(); 
     }catch(Exception e){ 
       Log.e("log_tag", "Error in http connection "+e.toString()); 
     } 
     try{ 
       BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8"),8); 
       StringBuilder sb = new StringBuilder(); 
       String line = null; 
       while ((line = reader.readLine()) != null) { 
         sb.append(line + "\n"); 
       } 
       is.close(); 

       result=sb.toString(); 
     }catch(Exception e){ 
       Log.e("log_tag", "Error converting result "+e.toString()); 
     } 
     try{ 
       JSONArray jArray = new JSONArray(result); 
       for(int i=0;i<jArray.length();i++){ 

        HashMap<String,String> map = new HashMap<String, String>(); 
        JSONObject e = jArray.getJSONObject(i); 
        Log.i("shruthi", "jason object length = " + e.length()); 
        map.put("id", e.getString("a_id")); 
        map.put("title", e.getString("a_title")); 
        map.put("author", e.getString("a_author")); 
        map.put("image", e.getString("a_thumbnail")); 
        mylist.add(map); 
      } 
       }catch(JSONException e)  { 
       Log.e("log_tag", "Error parsing data "+e.toString()); 
       } 

     ListAdapter adapter = new SimpleAdapter(SearchByLikeCount.this, mylist , R.layout.main2, 
     new String[] { "title", "author","image"}, 
     new int[] { R.id.item_title ,R.id.item_author,R.id.list_image}); 

     setListAdapter(adapter); 

     final ListView lv = getListView(); 
     lv.setTextFilterEnabled(true); 
     lv.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     @SuppressWarnings("unchecked") 
     HashMap<String, String> o = (HashMap<String, String>) lv.getItemAtPosition(position); 
     Object v=o.get("id"); 
     String id1=v.toString(); 
     Intent myintent= new Intent(SearchByLikeCount.this,ViewArticle.class); 
     myintent.putExtra("articleId", id1); 
     startActivity(myintent); 
     } 
    }); 
} 
} 

这没有工作:(可以告诉我做错了什么?

回答

0

如果从数据库中检索图像也不要紧,你想用它的图像哪个设备的图像

你可以做以下

$im = imagecreatefromstring($imageContent); 
if ($im !== false) { 
    header('Content-Type: image/png'); // Change to what you want 
    imagepng($im); 
    imagedestroy($im); 
} 
else { 
    echo 'An error occurred.'; 
} 
+0

感谢您的时间:)我很好用PHP代码..我需要知道如何编写检索blob图像的java代码:) – Shree 2012-04-21 16:11:34

0

也许你可以存储在图像文件夹
并存储在数据库中的文件夹的链接,并通过您的链接

try 
{ 
    Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(imageUrl).getContent()); 
    imageView.setImageBitmap(bitmap); 
} 
catch (MalformedURLException e) 
{ 
     e.printStackTrace(); 
} 
catch (IOException e) 
{ 
     e.printStackTrace(); 
} 
检索图像
相关问题