2016-03-09 2 views
1

Я хочу, чтобы мои приложения для Android отображали изображение, хранящееся в базе данных mysql.не может загрузить изображение из mysql, используя мой php url

Я могу загрузить и отобразить изображение, сохраненное в базе данных mysql, используя PHP, изображение будет правильно отображаться в браузере.

Также я могу отображать изображение в своих приложениях для Android, используя URL-адрес веб-сайта (например, изображение Google).

, но когда я пытаюсь использовать URL моего PHP в приложение для Android, я получил эту ошибку:

SkImageDecoder :: Завод возвращается нуль. Код

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"; 
 
} 
 
?>

+0

Что такое содержимое столбца «изображение»? Blob? Base64? – Grork

+0

содержание изображения [Blob-32 Kio] –

ответ

0

Я, наконец, получил его, echo base64_encode ($ result ['image']) не работает для меня, я не знаю почему. после поиска в сети я считаю, что эти 3 строки отображать изображение должным образом, и каждая строка необходима:

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

, а также в Android программы и приложения, я могу, наконец, получить изображение из мой URL-адрес php и отобразите его на ImageView

0

Вы отправляете HTML img тег не данные, которые вы на самом деле нужно, чтобы отобразить битовая карта. Вместо

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

попробовать просто echo ИНГ данные

echo $result['image']; 

Вы могли бы на самом деле нужно base64_encode, чтобы сделать это на самом деле работает. Проблема SkImageDecoder не ожидает HTML. Если вы не хотите менять PHP, вы можете загрузить webview в андроид, чтобы посмотреть картинку, это сработает с webview s умеет отображать HTML.

+0

не работает, я получил ту же ошибку, даже когда я делаю изменения –

+0

на самом деле, когда я делаю изменения, которые вы предложили, браузер показывает много символов ... –

+0

То есть потому что он отправляет данные в браузер вместо тега изображения. Вы пытались использовать echo base64_encode ($ result ['image']); '? – Phil

Смежные вопросы