2013-12-21 52 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