慕芷涵 发表于 2020-6-26 18:52:39

phpqrcode 生成的图片转为 base64 格式输出

项目中需要用到phpqrcode生成二维码,但是通过QRcode::png()生成的是显示输出当前的照片流,这样就不适用于列表显示多个二维码的需求了。网上也有相关的一些解决方案:通过把照片流缓存,然后进行base64编码。
找到生成图片用到了QRimage类的png方法,去除里面的:Header(“Content-type: image/png”);即可。



class QRimage {
   
      //----------------------------------------------------------------------
      public static function png($frame, $filename = false, $pixelPerPoint = 4, $outerFrame = 4,$saveandprint=FALSE)
      {
            $image = self::image($frame, $pixelPerPoint, $outerFrame);
            
            if ($filename === false) {
                // Header("Content-type: image/png");
                ImagePng($image);
            } else {
                if($saveandprint===TRUE){
                  ImagePng($image, $filename);
                  header("Content-type: image/png");
                  ImagePng($image);
                }else{
                  ImagePng($image, $filename);
                }
            }
            
            ImageDestroy($image);
      }
如此,不再让输出端整个页面变为图片类型,解决方案并不完美,但是能达到我的目的即可。 附调用端代码:


<?php
global $_W,$_GPC;
function getqrcode($url){
    require_once MODULE_ROOT.'/lib/phpqrcode_web.php';
    $value = $url;         //二维码内容
    $errorCorrectionLevel = 'L';//容错级别
    $matrixPointSize = 5;      //生成图片大小
    //生成二维码图片
    ob_start();
    QRcode::png($value,false,$errorCorrectionLevel, $matrixPointSize, 2);
    $imgstr = base64_encode(ob_get_contents());
    ob_end_clean();
    return $imgstr;
}

//调用查看结果
include $this->template('web/test');
?>



页: [1]
查看完整版本: phpqrcode 生成的图片转为 base64 格式输出