You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP将PostgreSQL中图片字节数组转为data URI格式渲染显示

PostgreSQL存储字节数组图片转Data URI渲染失败解决方案
  • PostgreSQL bytea字段转义处理
    PostgreSQL查询返回的bytea类型数据默认是带转义格式的十六进制字符串(通常以\x前缀开头),并非原始二进制内容,直接编码会导致base64结果错误。需要先用pg_unescape_bytea()函数将其转换为原始二进制数据再编码。
  • Data URI语法错误修正
    原代码中data:image/jpeg;base64, 后面多了一个多余空格,会导致浏览器无法正确识别base64编码内容,需要删除该空格。
  • MIME类型匹配校验
    如果存入数据库的图片格式不是JPEG,写死image/jpeg会导致图片无法渲染,可通过finfo扩展自动检测图片实际MIME类型。
  • 修正后完整代码如下:
<a href="#" class="image">
<?php 
    // 处理PostgreSQL bytea转义,获取原始二进制
    $rawImg = pg_unescape_bytea($row['book_pic']);
    // base64编码
    $base64Img = base64_encode($rawImg);
    // 自动检测MIME类型,解决格式不匹配问题
    $finfo = new Finfo(FILEINFO_MIME_TYPE);
    $mime = $finfo->buffer($rawImg);
    // 输出img标签,注意base64后无多余空格
    echo "<img src='data:{$mime};base64,{$base64Img}' alt='Image' class='pic-1'/>";
?>                                                 
</a>
  • 额外排查方向
    如果修改后仍无法显示,可先将$rawImg写入本地文件,检查文件是否能正常打开,排除图片存入数据库时就已损坏的问题。

内容的提问来源于stack exchange,提问作者Srinath Raghavan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 17:54:04