正确的标题php mysql blob显示图像

我试图从我的PHP页面中显示一个图像从MySQL blob(我知道它不是最好的做法),然后我将带入我的iOS应用程序。

我无法设置我认为需要设置为图像的页眉。

所以,这显示图像,但我不相信页面标题是正确的:

//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,但我得到一个错误,它不能显示,因为错误。

谢谢!

 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" /> 

现在你会注意到一个PHP文件的src点。 这是因为我们要让这个PHP文件返回一个图像。 这是image.php样子

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

这是有效的,因为浏览器将调用PHP文件,期待一个图像。 header告诉浏览器这是一个PNG文件,你现在可以转储你的二进制PNG数据。