无法在mpdf中显示base64图像


Failed to display base64 image in mpdf

我对mpdf还是有点陌生,我尝试使用mpdf使用嵌入式base64显示图像。下面是我的代码。

$kad_photo = base64_encode($row['kad_photo']);
header('Content-Type: image/jpeg;');
$photo = "<img src='"data:image/jpeg;base64, ".$kad_photo."'"/>";
$mpdf->WriteHTML($photo);

当我放入$mpdf->showImageErrors = true;:时,我得到了这个错误

mPDF error: IMAGE Error (0f5155bea7f7e18dc9f7c35b695d1705): Error parsing JPG header

我试了一下这个方法,它奏效了!

$mpdf->WriteHTML("<img src=".$_SERVER['DOCUMENT_ROOT']."/vms/images/logo/logo.png " . 
                 "width='"500'" height='"50'">");

但对于BASE64,我未能显示它。

除此之外,对于$photo,我得到了file_put_content字符串,并将其粘贴到jsfiddle,它就工作了!但在mpdf中,我无法显示base64图像。

为什么我不能使用嵌入式base64显示图像,有什么建议吗?

可能需要的信息

  1. php.ini中的Gd模块已启用
  2. Window 10单一语言

我解决了我的问题。我就是这样解决的。

更改此

$photo = "<img src='"data:image/jpeg;base64, ".$kad_photo."'"/>";

到这个

$photo = "<img src='"data:image/jpg;base64, ".$kad_photo."'"/>";

在我的案例中,我处理的一些用户数据中的图像类型设置不正确(设置为png,但图像数据为jpeg(。

$mpdf->showImageErrors = true;显示"解析PNG标识符时出错">

浏览器似乎能够找到并显示图像,但MPDF很挑剔。

我通过将base64数据粘贴到在线解码器中并尝试各种编码来解决这个问题。

此外,JPEG数据似乎以/j9/开头,如果这对任何人都有帮助的话。

$html= '<img src="data:image/jpeg;base64,'.base64_encode( 
stripslashes($row['kad_photo']) ).'"/>';
$mpdf->WriteHTML($html);
$mpdf->Output('My.pdf','D');

请试试这个

我也遇到了同样的问题,我已经修复了它,只是添加了正确的mime类型,我从响应的标头中获得了base64 的图像内容

            /** @var 'GuzzleHttp'Psr7'Response $value */
            $value = $result['value'];
            $contents = $value->getBody()->getContents();
            $this->data['images'][] = 'data:' . $value->getHeader('Content-Type')[0] . ';base64,' . base64_encode($contents);