PHP 使用GD库合成带二维码的海报步骤以及源码实现

在做微信项目开发过程中,经常会遇到图片合成的问题,比如将用户的二维码合成到宣传海报中,那么,遇到这种情况,利用PHP的GD库也是很容易实现的,实现步骤如下

准备好素材:

1、二维码原图qrcode.png  尺寸430*430:

2、海报原图test.png  尺寸680*1074:

步骤以及源码:

一、首先是将二维码缩小为206*206,因为使用微信公众号接口获取的二维码尺寸为430*430,图片有点大,所以要缩小成206*206的(此处单位都是px,下面默认也是px)

  //已生成二维码路径
$avatarUrl = '\qrcode.png';
//海报路径
$img = '\test.jpg';
//1、将微信二维码缩小至206*206,默认是430
$thumb = imagecreatetruecolor(206,206); //创建一个新的画布(缩放后的),从左上角开始填充透明背景
$img_content = imagecreatefromjpeg(getcwd().$avatarUrl);//获取图片资源
//dump($img_content);
imagecopyresampled($thumb, $img_content, 0, 0, 0, 0, 206, 206, 430, 430);//核心函数,改变图片大小
$file_name = "\qrcode_1.png";
imagepng($thumb,getcwd().$file_name);//将图片资源保存到qrcode_1.png中

二、此时在当前目录就会生成一个206*206的以qrcode_1.png命名的图片:,然后将缩小的二维码图片合成到海报中

 1  //2、将缩小的二维码合成到海报中
$imgs = imagecreatefromjpeg(getcwd().$img);
imagecopy($imgs, $thumb, 237, 589, 0, 0, 206, 206);//核心函数:复制图片资源到另一图片资源中
//imagecopy($imgd,$imgw,$x,$y,0,0, $wwidth,$wheight);
//$save="image".$dtype;
//保存到服务器
$f_file_name = "\last.png";
imagepng($imgs,getcwd().$f_file_name); //保存
imagedestroy($imgs);
imagedestroy($thumb);//销毁图片资源

此时,最终的合成已经完成,可以查看last.png图片是否符合要求:(其实,细看还是没有完全对好,这就是尺寸计算有问题,稍微修正一下就好)

最后需要注意的是:

1、GD库的imagecreatefrom函数要和图片真实格式对应,比如图片是png格式,则使用imagecreatefrompng(),如果是jpg格式,则使用imagecreatefromjpeg(),切不要以为图片是以.png结尾就一定是png格式的

2、可以使用php自带的getimagesize()函数来获取图片的真正格式

 //获取图片大小及类型
$arr = getimagesize(getcwd().$avatarUrl);
dump($arr);die;

执行结果为:

 array(7) {
[0] => int(430) //图片宽度像素值
[1] => int(430) //图片高度像素值
[2] => int(2) //图片的类型,返回数字,其中1为gif,2为jpg,3为png,等等
[3] => string(24) "width="430" height="430""
["bits"] => int(8)
["channels"] => int(1)
["mime"] => string(10) "image/jpeg" //图片的mime信息
}

3、获取图片资源的时候,要通过绝对路径获取,相对路径是获取不到的

PHP 使用GD库合成带二维码的海报步骤以及源码实现的更多相关文章

  1. PHP 使用GD库合成带二维码和圆形头像的海报步骤以及源码实现

    PHP 使用GD库合成带二维码和圆形头像的海报步骤以及源码实现 之前记录过一篇文章,不过那只是简单将二维码合成到海报中去,这次还要合成头像,而且是圆形.所需要素材就不一一列举,直接代码吧 1.先获取用 ...

  2. iOS开发——iOS7(及以后版本) SDK自带二维码(含条形码)扫码、二维码生成

    本文转载至 http://www.cnblogs.com/leotangcn/p/4357907.html 现在很多APP都涉及了二维码扫码功能,这个功能简单实用,很多情况下用户乐于使用,现在本文带来 ...

  3. 二维码合成,将苹果和安卓(ios和android)合成一个二维码,让用户扫描一个二维码就可以分别下载苹果和安卓的应用

    因为公司推广的原因,没有合适的将苹果和安卓(ios和android)合成一个二维码的工具. 因为这个不难,主要是根据浏览器的UA进行判断,所以就自己开发了一个网站 网站名称叫:好推二维码  https ...

  4. C# 实现生成带二维码的专属微信公众号推广海报

    原文:C# 实现生成带二维码的专属微信公众号推广海报 很多微信公众号中需要生成推广海报的功能,粉丝获得专属海报后可以分享到朋友圈或发给朋友,为公众号代言邀请好友即可获取奖励的.海报自带渠道二维码,粉丝 ...

  5. Python的开源人脸识别库:离线识别率高达99.38%(附源码)

    Python的开源人脸识别库:离线识别率高达99.38%(附源码) 转https://cloud.tencent.com/developer/article/1359073   11.11 智慧上云 ...

  6. (二)一起学 Java Collections Framework 源码之 AbstractCollection

    . . . . . 目录 (一)一起学 Java Collections Framework 源码之 概述(未完成) (二)一起学 Java Collections Framework 源码之 Abs ...

  7. 利用phpqrcode二维码生成类库合成带logo的二维码并且用合成的二维码生成海报(二)

    前期准备 引入phpqrcode类库(下载地址:https://download.csdn.net/download/weixin_37557729/11891240:支持彩色二维码的下载地址:htt ...

  8. python库myqr生成二维码

    python中有一个好玩的库,不仅可以生成各种花色的二维码,还可以生成动态二维码. MyQR是一个能够生成自定义二维码的第三方库,可以根据需要生成普通二维码.带图片的艺术二维码,也可以生成动态二维码 ...

  9. 使用python3调用MyQR库生成动态二维码(附源代码)

    可生成普通二维码.带图片的艺术二维码(黑白与彩色).动态二维码(黑白与彩色). GitHub:https://github.com/sylnsfar/qrcode 中文版:https://github ...

随机推荐

  1. glyphicons-halflings-regular.woff2 not found 前台错误修正

    错误内容如下: 首先在 web.config 里面加上如下内容: <system.webServer> <staticContent> <remove fileExten ...

  2. VS2015配置Entity Framework Power Tools Bate4,还有一些使用与注意的地方

    今天使用vs2015重新安装了这个名为Entity Framework Power Tools的插件,由于它只支持到2013,因此需要进行一些操作方能使用 下面是一些参考文档 http://www.c ...

  3. Node Sass could not find a binding for your current environment

    Node环境从8升级到10后,Node Sass could not find a binding for your current environment 标签(空格分隔): Node Node环境 ...

  4. 批量检查多个网址是否正常(shell编程)

    #!/bin/bash #version 1.1 #by zengj #using checking urls . /etc/init.d/functions checkurl() { wget -o ...

  5. Fatal error: Call to undefined function fnmatch() 解决

    我的PHP版本是5.6.30,linux 是CentOS 6.6,nginx,也不知啥问题,看了官方: https://secure.php.net/manual/en/function.fnmatc ...

  6. January 19 2017 Week 3 Thursday

    What a man needs most is appreciated. 人性最深切的需求就是渴望别人的赞赏. Being appreciated by others is very importa ...

  7. 推荐一个可以把网页背景色调成护眼色的Chrome扩展应用

    程序员一天有10几个小时要面对着电脑,老是这种白晃晃的屏幕,谁的眼睛受得了? 我在网上逛了一圈,找到一个比较实用的Chrome扩展应用,可以一键实现将Chrome打开网页的背景色修改成护眼的豆沙绿,这 ...

  8. 使用Vue-cli脚手架

    使用vue-cli脚手架开发vue项目,有以下好处: (1)成熟的Vue项目架构设计. (2)本地测试服务器(热更新). (3)集成打包上线方案. Vue-cli系统要求: Node.js(>= ...

  9. nbu异地备份实施前,数据收集日志

    1.修改bp.conf配置文件显示重删率 BPDBJOBS_COLDEFS = JOBID 5 true BPDBJOBS_COLDEFS = TYPE 7 false BPDBJOBS_COLDEF ...

  10. PowerShell交互下的热键