我想显示使用base64_encode编码的图像。该图像是根据通过URL传递的id参数从mysql db获取的。内容类型已设置。说我在index.php文件中有一个代码,而我在浏览器中使用url localhost:8080 / products_images / index.php?id = 1000
header('Content-Type:image/png');
if (isset($_GET['id'])) {
$id = $_GET['id'];
}
$sql = "SELECT image FROM table WHERE id = ".(int)$id;
$image = $dbInstance->getArray($sql);
unset($sql);
echo '<img src="data:image/png; base64,'.$image[0]['image'].'"/>';
不是在浏览器上显示图像,而是说图像“ localhost:8080 / products_images / index.php?id = 1000”无法显示,因为其中包含错误。
我知道它的发生,因为在浏览器DOM上,我可以清楚地看到图像标签的显示方式如下<img src="localhost:8080/products_images/index.php?id=1000">
而不是显示编码的字符串给img src标签,而是显示整个URL。
任何帮助将不胜感激!
答案 0 :(得分:-3)
要将图像发送到客户端,您可以尝试使用imagecreatefromstring
函数从字符串中加载图像,然后使用imagepng
函数将图像发送到客户端,它应该为您提供以下信息:
<?php
$data = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
. 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
. 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
. '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';
$data = base64_decode($data);
$im = imagecreatefromstring($data);
if ($im !== false) {
header('Content-Type: image/png');
// Send the image
imagepng($im);
imagedestroy($im);
} else {
echo 'An error occurred.';
}
?>
我从php doc那里得到了