目前我正在尝试显示我创建的数据库中的图像,使用 phpmyadmin 来测试我的脚本。该数据库包含 png 和 jpg 格式的图像。但是输出只是无意义的字符,因为浏览器无法渲染图像。谁能告诉我哪里出错了?
我用谷歌搜索了这个问题,我可以看到他们的模式和我的很相似,所以我真的不明白我错在哪里。我可以在数据库中获取图像的名称,但不能获取图像。
这是我的脚本:
<html>
<head></head>
<body>
<?php
$con = mysqli_connect("localhost", "Dave", "password");
if (!$con){
die ("Could not connect to database: " . mysqli_connect_error());
}
mysqli_select_db($con, "snippet");
$res = mysqli_query($con, "select * from image");
echo "<table>";
while ($row = mysqli_fetch_array($res)){
echo "<tr>";
echo "<td>"; ?> <img src="<?php echo $row["image"]; ?>" height="100" width="100"> <?php echo "</td>";
echo "<td>"; echo $row["image_name"]; echo "</td>";
echo "</tr>";
}
echo "</table>";
?>
</body>
</html>
最佳答案
您的图像存储为什么格式? 原始字节? Base-64? 还是网址?
如果它是一个 URL,那么只需使用 html img 元素的属性“src”。
如果是 Base-64 则使用
<img src="data:image/jpg;base64,THE BASE 64 code here" />
如果您有原始字节,请使用 PHP 将它们转换为 Base-64
$base64segment = base64_encode($data);
或者您可以在 src 属性中调用一个自定义 url,该 url 将指向一个 PHP 脚本,您可以在其中通过发送自定义 header 和字节来从字节中动态创建图像:
<?php
header('Content-type: image/jpeg');
header('Content-Length: '.strlen($data));
echo $data;
?>
基于 Base-64 的方法的缺点是数据比原始二进制段占用更多空间,因为编码是使用 64 个不同的符号而不是 256 个完成的。
关于php - 在 php 中显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24507465/