【问题标题】:Image loaded from a PHP script isn't displayed in ImageView从 PHP 脚本加载的图像不会显示在 ImageView 中
【发布时间】:2013-04-07 13:49:46
【问题描述】:

我想用保存在本地主机上的图像填充 ImageView。我可以在浏览器中很好地显示它,但它不会显示在我的 ImageView 中。

显示图片的PHP脚本:

<?php
include('connect_db.php');

    $id = $_GET['id'];

    $path = 'Profile_Images/'.$id.'.jpg';

        echo '<img src='.$path.' border=0>';

?>

这是我从 URL 下载图像的 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 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 是一个变量。

编辑

我们将不胜感激任何拒绝投票的原因!

【问题讨论】:

  • 显然,您使用了错误的 URL,因为正确的 URL 有效。检查第一个 URL 是否在浏览器中有效;如果不是,那是你的问题。
  • 脚本在浏览器中运行良好,但没有填满 ImageView
  • 两个网址都“运行良好”吗?你确实看到它们是不同的,对吧?另外,您的 php sn-p 引用了 .gif -- 是那些 .gif 文件吗?
  • 对不起,我有这个用于测试,我有另一个名为 145.gif 的图像也加载到浏览器中
  • 我几乎可以肯定ImageView 不支持.gif,但值得研究。

标签: java php android bitmap imageview


【解决方案1】:

其实很简单。当您向http://192.168.1.13/get_profile_image.php?id=145 发送请求时,会发回一个字符串 (&lt;img src=Profile_Images/'.$id.'.jpg border=0&gt;)。因为 DownloadImage 类不解析 HTML(它需要原始图像数据),所以它不知道实际图像在哪里。两种解决方案:

  1. 您的“不良做法”方法
  2. 改用这个 PHP 脚本来回显原始图像数据:

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

【讨论】:

    【解决方案2】:

    您的 PHP 代码将打印出以下内容:

    <img src=Profile_Images/145.jpg border=0>
    

    这不仅是格式错误的 HTML,而且是 text 输出。您的另一个 URL,http://192.168.1.13/Profile_Images/145.jpg 指向一个 image 文件,您从中接收的数据是图像,而不是 HTML 字符串。

    您应该考虑让您的 PHP 返回带有图像 ID 的 URL 的 JSON 响应,然后在该 URL 上运行 DownloadImage。与原始回显相比,它的优势在于您可以轻松扩展解决方案以返回其他类型的文件,甚至返回文件数组。

    【讨论】:

    • @11684 难以置信 20 多分钟没人注意到它:P 你得到了我的支持
    • 是的,在看到 SO 发现最晦涩的语法歧义之后,我也是这么想的。
    猜你喜欢
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多