php - 在 php 中显示图像

标签 php mysql

目前我正在尝试显示我创建的数据库中的图像,使用 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/

相关文章:

php - 如何动态创建子域

javascript - Laravel 简单的 crud 与 jquery ajax

Mysql 服务器未在从 AMI 创建的 EC2 实例上运行

php - 粘贴到文本区域的文本未插入到数据库中

PHP + MySQL : How to auto login after registration

mysql - 以默认 MySQL 值执行计算

php - 上传 CSV 文件以处理状态更新和插入新记录

java - 如何将 MySQL 表数据插入 JSONArray?

mysql - 使用 presto 如何显示像 XXX 这样的表格

php - Android中C2DM的一些查询