我想用我的localhost上保存的图像填充ImageView。我可以在浏览器中显示它,但它不会显示在我的ImageView中。
用于显示图像的PHP脚本:
<?php
include('connect_db.php');
$id = $_GET['id'];
$path = 'Profile_Images/'.$id.'.jpg';
echo '<img src='.$path.' border=0>';
?>
以下是我从网址下载图片的Android代码:
URL url;
try {
url = new URL("http://192.168.1.13/get_profile_image.php?id=145");
new DownloadImage(this).execute(url);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void imageDownloaded(final Bitmap downloadedImage) {
runOnUiThread(new Runnable() {
public void run() {
ImageView imageView = (ImageView)findViewById(R.id.imageView);
imageView.setImageBitmap(downloadedImage);
}
});
}
当我将网址放到其他图片时,它可以正常但我的永远不会被加载,任何想法?
此外,以下代码有效但我感觉不好做法..
URL url;
try {
url = new URL("http://192.168.1.13/Profile_Images/145.jpg");
new DownloadImage(this).execute(url);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
其中145将是变量。
修改
赞赏投票的任何理由都会受到赞赏!
答案 0 :(得分:3)
http://192.168.1.13/get_profile_image.php?id=145
发送请求时,会发回一个字符串(<img src=Profile_Images/'.$id.'.jpg border=0>
)。因为DownloadImage类不解析HTML(它想要原始图像数据),所以它不知道实际图像的位置。两种解决方案:
PHP:
$id = $_GET['id'];
$path = 'Profile_Images/'.$id.'.jpg';
$type = 'image/jpeg';
header('Content-Type:'.$type);
header('Content-Length: ' . filesize($path));
readfile($path);
编辑:忘记给某人信任:上面的代码来自此处(使用经过调整的变量名称):https://stackoverflow.com/a/1851856/1087848
答案 1 :(得分:2)
您的PHP代码将打印出以下内容:
<img src=Profile_Images/145.jpg border=0>
这不仅是格式错误的HTML,而且还是 text 输出。您的其他网址http://192.168.1.13/Profile_Images/145.jpg
指向图像文件,您收到的数据是图像,而不是HTML字符串。
您应该考虑让PHP使用图像ID的URL返回JSON响应,然后在该URL上运行DownloadImage
。它对原始回声的优势在于,您可以轻松扩展解决方案以返回其他类型的文件,甚至返回一组文件。