PHP 二维码生成+与活动图片合成

这篇博客介绍了如何使用PHP结合phpqrcode库生成二维码,并将二维码与Logo及活动图片进行合成,最终保存为一张合并后的图片。
摘要由CSDN通过智能技术生成

PHP 二维码生成+与活动图片合成

依赖库文件 phpqrcode.php

代码逻辑:
1.生成一张url相关的 二维码 QR
2.把log图片跟QR合并成一个带logo的二维码 last
3.把带logo的的二维码跟 活动图片合成为一张图 保存到本地 返回路径

//参数 活动模板图片,二维码url,模板内二维码的位置
function getActivityImg($template,$url,$x,$y)
{
        require_once  library_path("/phpqrcode.php");

        //二维码中间添加logo
        $logo = public_path('/assets/img/logos/logo.png');
        $QR = "base.png";
        $last = "last.png";
        $errorCorrectionLevel = 'Q'; //防错等级
        $matrixPointSize = 8; //二维码大小

        //生成二维码
        //参数内容:二维码储存内容,生成存储,防错等级,二维码大小,白边大小
        QRcode::png($url, $QR, $errorCorrectionLevel, $matrixPointSize, 1);

        //合并logo跟二维码-----------------start
        $QR = imagecreatefromstring(file_get_contents($QR));
        $logo = imagecreatefromstring(file_get_contents($logo));
        $QR_width = imagesx($QR);
        $logo_width = imagesx($logo);
        $logo_height = imagesy($logo);
        $logo_qr_width = $QR_width / 5;
        $scale = $logo_width / $logo_qr_width;
        $logo_qr_height = $logo_height / $scale;
        $from_width = ($QR_width - $logo_qr_width) / 2;
        imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
        imagepng($QR,$last); // 生成带log的二维码图片 存储到last
        //合并logo跟二维码-----------------end


        //合成带logo的二维码图片跟 模板图片--------------start
        $path_1 = $template;
        $path_2 = $last;
        $image_1 = imagecreatefromjpeg($path_1);
        $image_2 = imagecreatefrompng($path_2);
        $image_3 = imageCreatetruecolor(imagesx($image_1),imagesy($image_1));
        $color = imagecolorallocate($image_3, 255, 255, 255);
        imagefill($image_3, 0, 0, $color);
        imageColorTransparent($image_3, $color);
        imagecopyresampled($image_3, $image_1, 0, 0, 0, 0, imagesx($image_1), imagesy($image_1), imagesx($image_1), imagesy($image_1));

        imagecopymerge($image_3, $image_2, $x, $y,0, 0, imagesx($image_2), imagesy($image_2), 100);
        //合成带logo的二维码图片跟 模板图片--------------end

        //输出到本地文件夹
        $fileName=md5(basename($template).$url);
        $EchoPath='/assets/img/'.$fileName.'.png';
        imagepng($image_3,public_path($EchoPath));
        imagedestroy($image_3);
        //返回生成的路径
        return $EchoPath;
}
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值