无法使用我的php网址从mysql加载图像

时间:2016-03-09 16:44:52

标签: php android

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

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

我也可以使用网站的网址(例如谷歌图片)在我的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";
 }
?>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

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

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

尝试echo数据

echo $result['image'];

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

答案 1 :(得分:0)

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

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

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