如何用<img>标签调用PHP脚本显示库中编码图片?附Blob存储代码
用
标签显示数据库中存储的编码图片
你已经完成了图片编码存入数据库的步骤,接下来咱们一步步实现从数据库读取并通过<img>标签展示的完整流程,核心分为两个部分:编写读取图片的PHP接口和在HTML中调用该接口。
1. 编写读取图片的PHP脚本(比如命名为get_image.php)
这个脚本的作用是接收图片ID参数,从数据库取出对应的base64编码图片数据,解码后输出正确的图片内容和HTTP响应头。
<?php include './libraries/LIB_mysql.php'; // 复用你的数据库连接库 // 安全处理传入的ID参数,防止SQL注入 $imageId = isset($_GET['id']) ? intval($_GET['id']) : 0; if ($imageId <= 0) { // 处理无效ID的情况,比如输出默认占位图 header('Content-Type: image/png'); echo file_get_contents('./placeholder.png'); // 提前准备一个占位图文件 exit; } // 查询数据库中的图片数据(建议用预处理语句防注入) $query = "SELECT image_file FROM images WHERE image_id = ?"; // 假设你的LIB_mysql.php提供了数据库连接方法,这里用原生mysqli示例 $conn = get_db_connection(); // 替换为你库中的连接函数 $stmt = $conn->prepare($query); $stmt->bind_param("i", $imageId); $stmt->execute(); $stmt->bind_result($encodedImage); $stmt->fetch(); $stmt->close(); $conn->close(); if (!$encodedImage) { // 未找到对应图片时输出占位图 header('Content-Type: image/png'); echo file_get_contents('./placeholder.png'); exit; } // 解码base64字符串 $decodedImage = base64_decode($encodedImage); // 设置正确的Content-Type头(这里假设是PNG,若存了类型字段可动态设置) header('Content-Type: image/png'); // 可选:添加缓存头,减少重复请求压力 header('Cache-Control: public, max-age=86400'); // 输出图片内容 echo $decodedImage; ?>
2. 在HTML中用<img>标签调用该脚本
直接将<img>的src指向刚才的get_image.php,通过URL参数传递图片ID即可:
<!-- 显示你存入的image_id=3的图片 --> <img src="get_image.php?id=3" alt="Python编程教程图" width="300">
关键注意事项
- 数据库字段类型:base64编码后的字符串会比原图片大33%左右,
image_file字段建议用LONGTEXT类型(MySQL),避免存储截断问题。 - 图片类型动态适配:如果你的数据库表中额外存储了
image_type字段(比如image/png),可以在get_image.php中动态设置Content-Type,兼容JPG、GIF等多种格式。 - 安全防护:务必对传入的
id参数做校验(比如转整数),同时使用预处理语句执行查询,彻底避免SQL注入风险。 - 性能优化:添加缓存头可减少服务器重复查询压力;如果图片访问量较大,还可以将解码后的图片缓存到本地文件系统,进一步提升响应速度。
内容的提问来源于stack exchange,提问作者Mario Christov
相关产品推荐
相关产品推荐

