天天看點

thinkphp5.1生成二維碼并添加背景圖 phpqrcode

1.在thinkphp5.1中安裝phpqrcode

在github下載下傳phpqrcode

https://github.com/t0k4rt/phpqrcode

并把phpqrcode解壓到thinkphp目錄的 extend/phpqrcode 中

2.使用

在common.php中使用

/**
 * 生成二維碼
 * @param string $url 要生成的路徑
 * @param int $code 生成圖檔的名稱
 * @param string $urlImgBg 生成的背景圖檔
 * @param int $x 生成的 左到右的距離
 * @param int $y 生成的上到下的距離
 * @param string $level
 * @param int $size 生成二維碼大小
 * @return string
 */
function qrcode($url='https://www.baidu.com',$code = 111, $urlImgBg = './uploads/code/MG293.png', $x = 6, $y = 1340, $level = 'L', $size = 6){
    // 導入Phpqrcode插件檔案
    require_once EXTEND_PATH.'phpqrcode/phpqrcode.php';
    // 容錯級别
    $errorCorrectionLevel = $level;
    // 生成圖檔大小
    $matrixPointSize = intval($size);
    // 生成二維碼圖檔
    $object = new \QRcode();
    // 這個一定要加上,清除緩沖區
    ob_end_clean();
    // 第二個參數false的意思是不生成圖檔檔案,如果你寫上‘picture.png’則會在根目錄下生成一個png格式的圖檔檔案
    $path = './uploads/code/';
    $QR =$QRB = $path.$code.".png";
    $object::png($url, $QR, $errorCorrectionLevel, $matrixPointSize, 1);
    //添加背景圖檔合成
    $dst_path = $urlImgBg;//背景圖檔路徑
    $src_path = $QR;//覆寫圖
//        $src_path = $path.$user_id.".png";//覆寫圖
    //建立圖檔的執行個體
    $dst = imagecreatefromstring(file_get_contents($dst_path));
    $src = imagecreatefromstring(file_get_contents($src_path));
    //擷取覆寫圖圖檔的寬高
    list($src_w, $src_h) = getimagesize($src_path);
    //将覆寫圖複制到目标圖檔上,最後個參數100是設定透明度(100是不透明),這裡實作不透明效果
    imagecopymerge($dst, $src, $x, $y, 0, 0, $src_w, $src_h, 100);    //位置可以自己調試
    //        @unlink($QIMG); //删除二維碼與logo的合成圖檔
    @unlink($QRB);  //删除伺服器上二維碼圖檔
//    header("Content-type: image/png");
    imagepng($dst,'./uploads/code/'.$code.'.png');//根據需要生成相應的圖檔
//    imagejpeg($dst,'../uploads/user/'.$uid.'.jpg');
    imagedestroy($dst);
    imagedestroy($src);
    return '/uploads/code/'.$code.'.png';
}
           
php