2015-10-19 214 views
2

我想從PHP的HTML表格中的MySQL數據庫中顯示圖像。正如我存儲的圖像作爲DB BLOB的,我用下面的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

謝謝Barmar,現在桌子看起來更好,但圖像不會顯示,因爲他們應該,我得到以下: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! :)