【问题标题】:cannot load image from mysql using my php url无法使用我的 php url 从 mysql 加载图像
【发布时间】:2016-03-09 16:44:51
【问题描述】:

我希望我的 android 应用程序显示存储在 mysql 数据库中的图像。

我可以使用PHP加载和显示保存在mysql数据库中的图像,图像在浏览器上正确显示。

我也可以使用网站的 url 在我的 android 应用程序中显示图像(例如谷歌图像)。

但是当我尝试在 android 应用程序中使用我的 PHP 的 url 时,我收到了这个错误:

SkImageDecoder::Factory 返回 null。

java代码:

 @Override
        protected void onPostExecute(Bitmap b) {
            super.onPostExecute(b);
            loading.dismiss();
            imageView.setImageBitmap(b);
        }

        @Override
        protected Bitmap doInBackground(String... params) {
            String id = params[0];
            String add = "http://192.168.1.30/save/load_image_from_db.php";
            URL url;
            Bitmap image = null;
            try {
                url = new URL(add);
                HttpURLConnection connection  = (HttpURLConnection) url.openConnection();
                InputStream is = null;
                BufferedInputStream bis = null;
                is = connection.getInputStream();
                bis = new BufferedInputStream(is,8192);
                image = BitmapFactory.decodeStream(bis);
                //image = BitmapFactory.decodeStream(connection.getInputStream());
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return image;
        }

PHP 代码:

<?php
if($_SERVER['REQUEST_METHOD']=='GET'){
$id = $_GET['id']; 
$sql = "SELECT image FROM images WHERE id = '$id' ";
$con = mysqli_connect("localhost","root","","othmane");
$r = mysqli_query($con,$sql);
$result=mysqli_fetch_array($r);
echo '<img src="data:image/jpeg;base64,'.base64_encode( $result['image'] ).'"/>';
}
else{
echo "Error";
 }
?>

【问题讨论】:

  • “图像”栏的内容是什么?斑点? Base64?
  • 图片内容为[Blob- 32 Kio]

标签: php android


【解决方案1】:

您发送的是 HTML img 标记,而不是显示位图实际需要的数据。而不是

echo '<img src="data:image/jpeg;base64,'.base64_encode( $result['image'] ).'"/>';

试试echoing 数据

echo $result['image'];

您实际上可能需要base64_encode 才能使其真正起作用。问题是 SkImageDecoder 不期待 HTML。如果您不想更改 PHP,您可以在 android 中加载 webview 以查看图像,这将起作用,因为 webviews 知道如何显示 HTML。

【讨论】:

  • 不起作用,即使我进行了更改,我也遇到了同样的错误
  • 实际上,当我进行您建议的更改时,浏览器显示了很多字符...
  • 那是因为它是将数据发送到浏览器而不是图像标签。你试过echo base64_encode( $result['image'] );吗?
【解决方案2】:

我终于明白了,echo base64_encode($result['image']) 对我不起作用,我不知道为什么。在网上搜索后,我发现这 3 行可以正确显示图像,并且每一行都是必要的:

header('Content-Type:image/jpeg');
stripslashes ($result['image']);
echo $result['image'];

在 android 应用程序中,我终于可以从我的 php URL 获取图像并将其显示在 ImageView 上

【讨论】:

    猜你喜欢
    • 2022-09-30
    • 2019-08-20
    • 2015-07-25
    • 2012-06-30
    • 2020-03-16
    • 2020-05-13
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    相关资源
    最近更新 更多