function addTextToImage($qrCode, $text) {
        // 假设 $qrCode 是通过某个生成小程序码的函数或方式获取的图像资源

        // 获取小程序码的宽度和高度
        $qrCodeWidth = imagesx($qrCode);
        $qrCodeHeight = imagesy($qrCode);

        // 增加底部白色区域的高度和文字内容
        $bottomMargin = 40; // 可以根据需要调整空白区域的高度
        $font = 18; // 字体大小,可以根据需要调整
        $color = imagecolorallocate($qrCode, 0, 0, 0); // RGB 颜色值,这里是黑色,可以根据实际情况调整

        // 创建一个新的图像资源,包括额外的底部空白和文字
        $newImage = imagecreatetruecolor($qrCodeWidth, $qrCodeHeight + $bottomMargin);

        // 填充底部空白区域为白色
        $white = imagecolorallocate($newImage, 255, 255, 255);
        imagefilledrectangle($newImage, 0, $qrCodeHeight, $qrCodeWidth, $qrCodeHeight + $bottomMargin, $white);

        // 在新图像上复制生成的小程序码
        imagecopy($newImage, $qrCode, 0, 0, 0, 0, $qrCodeWidth, $qrCodeHeight);

        $fontfile=public_path().'/static/fonts/ttfs/arial.ttf';
        if(!file_exists($fontfile)){
            return false;
        }

        // 设置文字的位置
        $textWidth = imagettfbbox($font, 0, $fontfile, $text);
        $textWidth = $textWidth[4] - $textWidth[0]; // 获取文字宽度
        $textX = ($qrCodeWidth - $textWidth) / 2; // X 坐标居中
        $textY = $qrCodeHeight + 20; // 文字距离底部空白的顶部距离,可以根据需要调整

        // 添加文字到新的图像上
        imagettftext($newImage, intval($font), 0, intval($textX), $textY, $color, $fontfile, $text);
        // 释放原始小程序码资源
        imagedestroy($qrCode);

        return $newImage;
    }

调用的地方:

 $url = 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' . $access_token;

        $data = array(
            'scene'      => $qrcode_id,
            'page'       => get_sys_config('pageurl'),//'',//'pages/index/codeRent', // 替换成你的小程序页面路径
            'width'      => 300,
            'auto_color' => false,
            'line_color' => array('r' => 0, 'g' => 0, 'b' => 0),
            'is_hyaline' => false,
        );

        $data_json = json_encode($data);

        $response = Http::curl_post($url, $data_json);

        $file_path = '/storage/qrcode/' . date("Y-m-d"); // 替换成你存储图片的路径

        $file_name = date("YmdHis") . '_' . $qrcode_id . '.png';

        //只是做了个目录/的处理,没啥其他用
        $destDir = Filesystem::fsFit(public_path() . $file_path);

        if (!is_dir($destDir)) {
            mkdir($destDir, 0777, true);
        }
        try {

            $result = imagecreatefromstring($response);

            if ($result) {
                // 加文字到小程序码上
                $newImage = addTextToImage($result, $lockInfo['lock_barcode']);



                // 保存图像到本地文件
                $imagePath = $destDir . '/' . $file_name; // 替换为你希望保存的路径和文件名
                // 保存为 PNG 格式
                imagepng($newImage, $imagePath);

                // 释放新图像资源
                imagedestroy($newImage);
            } else {
                new Exception('无法生成小程序码');
            }
            self::update(['qr_image' => $file_path.'/'.$file_name], ['qr_id' => $qrcode_id]);
        } catch (FileException $e) {
            throw new FileException($e->getMessage());
        }
        return $file_path . '/' . $file_name;


点赞(0)

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部
{__SCRIPT__}