php生成二维码并与背景图片合成

1. 下载 phpqrcode  PHP QR Code是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示demo,查看地址:http://phpqrcode.sourceforge.net/

2.下载出来的文件我们只需要 phpqrcode.php 这个文件, 文件里面提供了一个关键的png()方法:

参数$text表示生成二位的的信息文本;
参数$outfile表示是否输出二维码图片 文件,默认否;
参数$level表示容错率,也就是有被覆盖的区域还能识别,分别是 L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,15%),Q(QR_ECLEVEL_Q,25%),H(QR_ECLEVEL_H,30%); 
参数$size表示生成图片大小,默认是3;参数$margin表示二维码周围边框空白区域间距值;
参数$saveandprint表示是否保存二维码并显示。

3. 在你的项目方法中引入该文件

require_once(dirname(__FILE__)."/phpqrcode.php");//引入文件
$url = URL::base(true)."invitation/share?share_id={$share_id}";//生成二维码的链接
$value = $url;         //二维码内容
$errorCorrectionLevel = 'L';  //容错级别
$matrixPointSize = 2;      //生成图片大小
//生成二维码图片
$filename = MODPATH.'/mall/media/qrcode/'.$user_id.'_qrcode.png';//生成二维码保存目录
QRcode::png($value,$filename , $errorCorrectionLevel, $matrixPointSize, 2);
$QR = $filename;        //已经生成的原始二维码图片文件

$QR = imagecreatefromstring(file_get_contents($QR));
//输出图片
imagepng($QR, 'qrcode.png');
imagedestroy($QR);

4 . 与已有的背景图片合成一张图片

if(file_exists($filename)){//判断一下是否生成了二维码
    $poster_url = MODPATH.'/mall/media/qrcode/'.$user_id.'_haibao.png';//保存生成海报的目录
    $path_1 = MODPATH . '/mall/media/img/img-poster.png';//背景图目录
    $path_2 =  $filename;//上面生成二维码的目录
    //创建图片的实例
    $dst = imagecreatefromstring(file_get_contents($path_1));
    $src = imagecreatefromstring(file_get_contents($path_2));
    // 把二维码图片的白色背景设为透明
    // imagecolortransparent($src, imagecolorallocate($src, 255, 255, 255));

    //获取水印图片的宽高
    list($src_w, $src_h) = getimagesize($path_2);

    //将水印图片复制到目标图片上
    imagecopymerge($dst, $src, 400, 503, 0, 0, $src_w, $src_h, 100);
    //生成图片
    imagepng($dst,$poster_url);
    imagedestroy($dst);
    imagedestroy($src);

}

5.如此功能就完成了 中间的一些逻辑自己再补充 ,此文章根据自己项目需求以及网上的经验总结。只为学习。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值