从mysql数据库中检索blob图像并在android listview中显示
问题描述:
我在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);
}
});
}
}
这没有工作:(可以告诉我做错了什么?
答
如果从数据库中检索图像也不要紧,你想用它的图像哪个设备的图像
你可以做以下
$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.';
}
答
也许你可以存储在图像文件夹
并存储在数据库中的文件夹的链接,并通过您的链接
try
{
Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(imageUrl).getContent());
imageView.setImageBitmap(bitmap);
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
检索图像
感谢您的时间:)我很好用PHP代码..我需要知道如何编写检索blob图像的java代码:) – Shree 2012-04-21 16:11:34