2016-08-02 91 views
1

下面是編碼我目前使用從數據庫顯示圖像:不同後綴(PHP)顯示圖像

$con = mysqli_connect('localhost','root','','demo') or die('Unable To connect'); 
$query = mysqli_query($con,"SELECT * FROM images"); 
while($row=mysqli_fetch_assoc($query)) 
{ 
    echo '<img src="data:image/png;base64,' . base64_encode($row['image']) . '" />'; 
} 

問題的那些編碼:它僅與png格式擴展,因爲我顯示圖像我正在使用echo '<img src="data:image/png;base64,' . base64_encode($row['image']) . '" />';來顯示它。

我在做什麼:我想顯示圖像的擴展名爲.jpeg.png.gif以及。

有沒有人可以幫助我以其他簡單的方式顯示圖像?謝謝。

回答

2

在數據庫中存儲的格式,以及:

$con = mysqli_connect('localhost','root','','demo') or die('Unable To connect'); 
$query = mysqli_query($con,"SELECT * FROM images"); 
while($row=mysqli_fetch_assoc($query)) 
{ 
    echo '<img src="data:image/' . $row['format'] . ';base64,' . base64_encode($row['image']) . '" />'; 
} 
+0

正確+10。 GOOD CAUGHT –

2

嗨剛剛獲得imageextension,並用它

$ext = pathinfo($row['image'], PATHINFO_EXTENSION); 
echo '<img src="data:image/' . $ext . ';base64,' . base64_encode($row['image']) . '" />'; 
+0

必須讀取循環中的每個圖像(尤其是大量圖像),可能會導致不必要的磁盤IO/CPU週期。 – FrankerZ

2

@FrankerZ已經給了正確的解決方案,但如果你已經存儲的base64圖片在你的數據庫中,添加格式列會有問題。

您可以像這樣從base64中發現MIME類型的圖像;

$img = $row['image']; // base64 of your image 
$fileInfo = finfo_open(); // file info resource 
$mimeType = finfo_buffer($fileInfo, $img, FILEINFO_MIME_TYPE); 

如果您已經現有的記錄,不要在你的每一次迭代應用此方法。只需在數據庫中添加新列,然後使用此方法填寫/更新這些新的列。之後,使用@FrankerZ的解決方案。

+0

我正在嘗試代碼。 – Emerald

+1

我在帖子中添加了新警告。請考慮一下。 –