<?php

namespace app\common\utils;


use Endroid\QrCode\Encoding\Encoding;
use Endroid\QrCode\QrCode;
use Endroid\QrCode\Writer\PngWriter;

class GenerateQrcode
{
    //二维码工具类


    //生成一个二维码
    public function generateQrcode($data)
    {
        if (empty($data)) {
            // 如果没有提供内容,返回错误
            return false;
        }
        $qrCode = QrCode::create($data['code'])
            // 内容编码
            ->setEncoding(new Encoding('UTF-8'))
            // 内容区域大小
            ->setSize(200)
            // 二维码中间区域logo图片
            // 内容区域外边距
            ->setMargin(10);

            // 生成二维码数据对象(后面两个参数都是可选的)
        $result = (new PngWriter)->write($qrCode);
        // 将二维码图片保存到本地服务器
        $result->saveToFile(ROOT_PATH.'/public/uploads/check/'.$data['user_id'].'.png');
        return ROOT_PATH.'/public/uploads/check/'.$data['user_id'].'.png';

//         返回 base64 格式的图片
//        $dataUri = $result->getDataUri();
//        echo "<img src='{$dataUri}'>";

//         直接输出在浏览器中
// ob_end_clean(); //处理在TP框架中显示乱码问题
// header('Content-Type: ' . $result->getMimeType());
// echo $result->getString();
    }

    //二维码上添加字体
    public function addFontsToQrcode($data)
    {
        $image = imagecreatefrompng($data['path']);
        $width = imagesx($image);
        $height = imagesy($image);
        $white = imagecolorallocate($image, 0, 0, 0); // 白色文字
        $font = ROOT_PATH . 'public' . DS . 'uploads' . DS . 'yahei.ttf'; // 替换为你的字体文件路径
        // 在二维码上方添加文字
        $textAbove = $data['above'];
        $textWidthAbove = imagettfbbox(14, 0, $font, $textAbove)[2] - imagettfbbox(14, 0, $font, $textAbove)[0];
        $margin = 1; // 文字与二维码边缘的距离
        $textYAbove = $margin;//这里可以自己调整字体的上下边距
        $textXAbove = ($width - $textWidthAbove) / 2;
        imagettftext($image, 12, 0, $textXAbove, 20, $white, $font, $textAbove);

        // 在二维码下方添加文字
        $textBelow = $data['below'];
        $textWidthBelow = imagettfbbox(14, 0, $font, $textBelow)[2] - imagettfbbox(14, 0, $font, $textBelow)[0];
        $textYBelow = $height - $margin; // 14 是文字的高度,根据字体大小调整
        $textXBelow = ($width - $textWidthBelow) / 2;
        imagettftext($image, 12, 0, $textXBelow, $textYBelow - 7, $white, $font, $textBelow);

        // 保存修改后的图片
        imagepng($image, $data['path']);

        // 清理资源
        imagedestroy($image);

        // 返回文件路径
        return $data['path'];
    }


}