首页 > 解决方案 > Base64 编码的图像未显示

问题描述

我在带有图像的表中有一个 blob 列。图像被保存,通过命令提示图像显示为图像名称,通过转储显示为流资源。

我想显示与其相关的报价的图像,但我没有显示图像,只是 alt。

控制器

// Images
    $imgs=$imR->findAll();
    $img=array();
    foreach ($imgs as $i) {
        $img[]=base64_encode(stream_get_contents($i->getImage()));
    }
    for ($i=0; $i < sizeof($imgs); $i++) { 
        $imgs[$i]->setImage($img[$i]);
    }

枝条

    {% for pic in imgs %}
      {% if pic.Offer.id == part.id %}
         <img alt="Embedded Image" src="data:image/jpeg;base64, {{pic.Image}}"/>
      {% endif %}
    {% endfor %}

Chrome 开发者工具

<img alt="Embedded Image" src="data:image/jpeg;base64, ZmlsZS01ZDQzZmE0NzRiNmI4LmpwZWc=">

编码前转储

0 => Images {#1080 ▼
-id: 1
-Image: stream resource @840 ▼
  wrapper_type: "PHP"
  stream_type: "TEMP"
  mode: "w+b"
  unread_bytes: 0
  seekable: true
  uri: "php://temp"
  options: []
}
-Offer: Offers {#927 ▶}

}

编码后转储

0 => Images {#1080 ▼
-id: 1
-Image: "ZmlsZS01ZDNlYmFjNDc4YTQ1LmpwZWc="
-Offer: Offers {#927 ▶}

任何想法为什么图像无法正确显示?图片扩展名:jpeg

标签: phpsymfonytwig

解决方案


通过删除基本编码修复

控制器

// Images
    $imgs=$imR->findAll();
    $img=array();
    foreach ($imgs as $i) {
        $img[]=stream_get_contents($i->getImage());
    }
    for ($i=0; $i < sizeof($imgs); $i++) { 
        $imgs[$i]->setImage($img[$i]);
    }

枝条

{% for pic in imgs %}
  {% if pic.Offer.id == part.id %}
    <img alt="Embedded Image" src="{{asset('offersImages/' ~ pic.Image)}}"/>
  {% endif %}
{% endfor %}

现在正常显示。

感谢您提出问题所在


推荐阅读