phpqrcode 生成二维码并将生成的二维码放在某个图片上并添加文字

2022/1/27 17:06:23

本文主要是介绍phpqrcode 生成二维码并将生成的二维码放在某个图片上并添加文字,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

public function downQrCode($productId)
    {
        header("Content-type:image/png");
        $label = "扫描二维码领取礼品";
        $qrPath = runtime_path('qrcode');
        // 存在清空文件不存在创建目录
        if (is_dir($qrPath)){
            array_map('unlink', glob($qrPath .'*'));
        } else {
            mkdir($qrPath,0777,true);
        }
        require "vendor/dh2y/think-qrcode/src/phpqrcode/phpqrcode.php";
        $qrCode = new \QRcode();

        $row = Voucher::find($productId);
        $res = $row['details'];
        $result = [];
        foreach ($res as $code) {
            $domain = $_SERVER['REQUEST_SCHEME'] . '://' .$_SERVER['SERVER_NAME'];
            $data = $domain.'/daijinquan?param=mini&code='.$code."_".$productId;          
            $level = 'L';
            $size = 7;
            $QR = $qrPath . time() . ".png";
            $qrCode->png($data, $QR, $level, $size, 2);
            $result[] = $this->fugai($QR,$code);
        }
        //生成zip文件下载
        $path = app()->getRootPath() . 'upfile/zip/';
        if (!is_dir($path))mkdir($path);
        array_map('unlink', glob($path .'*'));
        $downName = $row['name'] . date("YmdHis") . '.zip';


        $zipName = $path . 'qrcode'.time().'.zip';

        $zip = new \ZipArchive();
        if ($zip->open($zipName, \ZIPARCHIVE::OVERWRITE | \ZIPARCHIVE::CREATE)!==TRUE) {
            exit('无法打开文件,或者文件创建失败');
        }

        foreach($result as $val){
            //解压zip直接是文件
            $zip->addFile($val, basename($val));
        }
        $zip->close();//关闭
        if(!file_exists($zipName)){
            exit("无法找到文件"); //即使创建,仍有可能失败
        }
        //如果不要下载,下面这段删掉即可,如需返回压缩包下载链接,只需 return $downName;
        header("Cache-Control: public");
        header("Content-Description: File Transfer");
        header('Content-disposition: attachment; filename='.basename($downName)); //文件名
        header("Content-Type: application/zip"); //zip格式的
        header("Content-Transfer-Encoding: binary"); //告诉浏览器,这是二进制文件
        header('Content-Length: '. filesize($zipName)); //告诉浏览器,文件大小
        @readfile($zipName);
        return $downName;
    }

    public function fugai($QR,$code){
        $code_path = runtime_path('qrcode').$code.time().'.png';
        $dst_path = root_path('public')."share.png";//背景图片路径
        $src_path = $QR;//覆盖图
        //创建图片的实例
        $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, 230, 640, 0, 0, $src_w, $src_h, 100);    //位置可以自己调试

        imagepng($dst,$code_path);//根据需要生成相应的图片
        imagedestroy($dst);
        imagedestroy($src);

        $image = imagecreatefrompng($code_path);

        $font = root_path('public').'MSYH.TTF'; // 字体文件
        $color = imagecolorallocate($image,0,0,0); // 文字颜色
        imagettftext($image, 40, 0, 250, 600, $color, $font, $code); // 创建文字
//        imagettftext($image, 10, 0, 250, 600, $color, $font, $code); // 创建文字
        imagepng($image,$code_path);
        return $code_path;

    }



这篇关于phpqrcode 生成二维码并将生成的二维码放在某个图片上并添加文字的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程