2013-12-21 51 views
1

我試圖顯示一個圖像從MySQL blob(我知道它不是最佳實踐)在我的PHP頁面,然後我將帶入我的iOS應用程序。正確的標題php mysql blob顯示圖像

我無法設置我認爲需要設置爲圖像的頁眉。

所以,這顯示了圖像,但我不相信的頁頭是正確的:

//header("Content-type: image/png"); 
echo '<img src="data:image/png;base64,' . base64_encode($row['image1']) . '" />'; 

然而,這並不表明我的形象:

header("Content-type: image/png"); 
echo '<img src="data:image/png;base64,' . base64_encode($row['image1']) . '" />'; 

我缺少什麼?我相信圖像應該顯示時,標題設置爲圖像/ PNG,但我收到一個錯誤,它不能顯示,因爲錯誤。

謝謝!

+0

'$ row ['image1']'的數據類型是什麼?它是一個網址嗎? – AustinAllover

+0

它來自mysql數據庫blob字段 – mreynol

回答

3
header("Content-type: image/png"); 

這告訴您的瀏覽器您即將通過它的原始二進制數據,這是一個PNG文件。所以之後的任何輸出都必須是二進制PNG。你不能再放置HTML和期望的工作

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

這工作,因爲你是編碼圖像(二進制轉換成文本)的base64,輸出的是瀏覽器,然後告訴你的瀏覽器將其解釋爲BASE64。

如果要輸出原始二進制數據,則必須重新排列訂單。所以這裏是你的HTML

<img src="image.php" /> 

現在你會注意到src指向一個PHP文件。這是因爲我們要讓該PHP文件返回一個圖像。下面是image.php會是什麼樣

//Your query here 
$row = mysqli_fetch_assoc($result); 
header("Content-type: image/png"); 
echo $row['image1']; 

這工作,因爲瀏覽器會調用PHP文件,期望的圖像。 header告訴瀏覽器這是一個PNG文件,您現在可以轉儲您的二進制PNG數據。

+0

那麼我如何將原始二進制數據傳遞給瀏覽器並讓它呈現圖像呢? – mreynol

+0

編輯說明如何做到這一點 – Machavity

+0

謝謝,但拍它不工作。 – mreynol