2015-10-19 4 views
2

Я пытаюсь отобразить изображение из базы данных mysql в таблице HTML с PHP. Как я хранятся изображения, как больших двоичных объектов в БД, я использовал следующие функции base64, чтобы преобразовать их из двоичного и правильно отображать их:base64 декодирование не работает

$enc=base64_encode($image); 
$dec=base64_decode($enc); 
echo $dec; 

Я не знаю, почему образы продолжают отображать так: enter image description here

Вот весь PHP код:

<?php 
    // Konexio lokala sortu 
    $sql = mysql_connect('localhost', 'root', '') or die(mysql_error()); 
    // Konexioa lokala egiaztatu 
    mysql_select_db("quiz") or die(mysql_error()); 
    $sql="SELECT * FROM `Erabiltzaile`"; 
    $records = mysql_query($sql); 
    if (! $records) 
    { 
     die('Errorea: ' . mysql_error()); 
    } 
    mysql_close(); 
?> 

<html> 
<head> 
    <title>Erabiltzaileak</title> 
</head> 
<body> 
    <table width="800" border="1" cellpadding="1" cellspacing="1"> 
      <tr> 
       <th>Izena</th> 
       <th>E-posta</th> 
       <th>Pasahitza</th> 
       <th>Telefonoa</th> 
       <th>Espezialitatea</th> 
       <th>Interesak</th> 
       <th>Argazkia</th> 
      <tr> 
     <?php 
      while($erabiltzaile=mysql_fetch_assoc($records)) { 
       echo "<td>".$erabiltzaile['Izena']."</td>"; 
       echo "<td>".$erabiltzaile['Eposta']."</td>"; 
       echo "<td>".$erabiltzaile['Pasahitza']."</td>"; 
       echo "<td>".$erabiltzaile['Telefonoa']."</td>"; 
       echo "<td>".$erabiltzaile['Espezialitatea']."</td>"; 
       echo "<td>".$erabiltzaile['Interesak']."</td>"; 
       $image = $erabiltzaile['Argazkia']; 
       echo "<td>"; 
       $enc=base64_encode($image); 
       $dec=base64_decode($enc); 
       echo $dec; 
       echo "</td>"; 
       echo "</tr>"; 
      } 
     ?> 

    </table> 
</body> 

это мой первый вопрос здесь, надеюсь, формат вопрос хороший. Извините за слова в Баске (Argazkia означает «Изображение»).

+0

Храните изображения в файловой системе. – user2182349

+1

Звонки b64 бесполезны. все, что вы делаете, эквивалентно обертыванию коробки в бумагу, а затем снова сбрасывает бумагу. вы просто получите оригинальную коробку. это ** НЕ **, как вы отображаете изображение в html. –

+0

Если вы хотите увидеть изображение, оно должно быть в теге ''. – Barmar

ответ

3

Поместите код base64 в data: URI в <img> тег:

$type = getimagesizefromstring($image); 
$enc = base64_encode($image); 
echo "<td>"; 
echo "<img src='data:" . $type['mime'] . "';base64," . $enc . "'>"; 
echo "</td>"; 

getimagesizefromstring доступен в PHP 5.4+. Если у вас установлена ​​более старая версия, вы можете найти polyfill here.

+0

Спасибо, Бармар, теперь таблица выглядит лучше, но изображения не отображаются так, как должны, я получаю следующее: http://i.imgur.com/hzIbkc6.png Вы знаете, почему это происходит? –

+0

Извините, я забыл, что 'getimagesize' принимает имя файла, а не данные необработанного изображения. Я обновил ответ, чтобы использовать 'getimagesizefromstring'. – Barmar

1

я наконец сделал это работать с этим:

$enc = base64_encode($image); 
echo "<td>"; 
echo '<img src="data:image/;base64,' . $enc . '"/>'; 
echo "</td>"; 

Без $type = getimagesize($image);

Спасибо за все комментарии и ответ Barmar! :)

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