当前位置: 首页 > Linux

分享一下利用phpqrcode二维码生成类库和imagecopymerge函数制拼合(镶嵌、合并、水印)图片经验

时间:2023-04-06 04:47:34 Linux

分享使用phpqrcode二维码生成类库和imagecopymerge函数制作图片的经验(马赛克、合并、水印)下载phpqrcode类库下载地址不提供,百度一搜一大堆;新建的php文件是用来创建二维码的,请注意(每个中文段落末尾会有一定的代码示例)例如:新建文件qrcode.php后引入phpqrcode类库代码文件中的演示include('../phpqrcode/phpqrcode.php');然后就是设置二维码的链接地址$url='http://www.baidu.com';然后设置二维码的容错级别,容错级别是多少?通俗一点就是容错级别的百分比越高越容易识别。下面是三个容错等级:L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,15%),Q(QR_ECLEVEL_Q,25%),H(QR_ECLEVEL_H,30%)%);根据效果,顺序是H->Q->M->L所以,直接用H代码示例即可:$errorCorrectionLevel='H';//容错级别,然后继续设置生成二维码的大小codeimage$matrixPointSize=7;//图片大小自己慢慢调整。只要是int,就可以设置生成二维码的图片名称。博主使用5作为随??机数+时间戳来生成文件名,目的是为了防止文件名相互重叠。.QR=rand(10000,99999).time().".png";最后,是时候生成二维码了!只需使用刚刚设置的参数直接调用ORcode::png()即可。最后一个参数*2*表示白色边框的宽度。QRcode::png($url,$QR,$errorCorrectionLevel,$matrixPointSize,2);如果你想在二维码中间放一个LOGO,那就继续往下看吧!首先引用一张图片(你公司的LOGO)$logo='./images/logo.png';然后对程序的完整性做一个简单的判断。可能有的童鞋不需要LOGO,注意下面的代码,博主的注释比较清楚。如果($logo!==FALSE){$QR=imagecreatefromstring(file_get_contents($QR));$logo=imagecreatefromstring(file_get_contents($logo));$QR_width=imagesx($QR);//二维码图片宽度$QR_height=imagesy($QR);//二维码图片高度$logo_width=imagesx($logo);//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;//重新组合图像并调整大小}终于可以像往常一样直接输出图片了,我们给图片起个名字吧;这次使用6作为随机数+时间戳$QRM=rand(100000,999999).time().".png";imagepng($QR,$QIMG);然后输出图像echo'';整个乐队标志的二维码就生成了。如果您仍想将它拼接在其他图像上,请继续阅读!(文末有整个项目的代码,记得点个赞!)imagecopymerge函数用于合并(马赛克、合并)图片,也适用于水印。;//Baseimage$src_path=$QIMG;//Overlayimage,我们继续使用上面的图像QIMG创建一个图像实例$dst=imagecreatefromstring(file_get_contents($dst_path));$src=imagecreatefromstring(file_get_contents($源路径));获取覆盖图片列表的宽高($src_w,$src_h)=getimagesize($src_path);将图片复制到目标图片(底图),最后一个参数是设置透明度(50是半透明,100是不透明,可以随意设置),这里实现不透明度效果,两个20是控制图片的坐标位置,慢慢调整imagecopymerge($dst,$src,20,20,0,0,$src_w,$src_h,100);如果水印图片本身有透明色,使用imagecopy方法imagecopy($dst,$src,10,10,0,0,$src_w,$src_h);//博主的不透明,所以不要用本节~使用以下生成图片list($dst_w,$dst_h,$dst_type)=getimagesize($dst_path);然后用switch判断图片的类型switch($dst_type){case1://GIFheader('Content-Type:image/gif');imagegif($dst);休息;case2://JPGheader('Content-Type:image/jpeg');imagejpeg($dst);休息;case3://PNGheader('Content-Type:图片/png');imagepng($dst);休息;默认值:中断;}最后打印出图片imagedestroy($dst);imagedestroy($src);整个程序的完整代码,索取!记得点赞、打赏、收藏等等哦!include('../phpqrcode/phpqrcode.php');$url='http://www.baidu.com';//二维码内容$errorCorrectionLevel='H';//容错级别$matrixPointSize=7;//生成图片大小//生成二维码图片$QR=rand(10000,99999).time().".png";QRcode::png($url,$QR,$errorCorrectionLevel,$matrixPointSize,2);$logo='../images/logo.png';//准备好logo图片//生成时间戳处理叠加图片,防止权限存在//$op=time();//$QR='qrcode.png';//生成的原始二维码if($logo!==FALSE){$QR=imagecreatefromstring(file_get_contents($QR));$logo=imagecreatefromstring(file_get_contents($logo));$QR_width=imagesx($QR);//二维码图片宽度$QR_height=imagesy($QR);//二维码图片高度$logo_width=imagesx($logo);//logo图片宽度$logo_height=imagesy($logo);//logo图片高度$logo_qr_width=$QR_width/5;$scale=$logo_width/$logo_qr_width;$logo_qr_height=$logo_高度/$规模;$from_width=($QR_width-$logo_qr_width)/2;//重新组装图像并调整大小}//输出图像$QIMG=rand(100000,999999).time().".png";imagepng($QR,$QIMG);$dst_path='a.png';//Basemap$src_path=$QIMG;//Overlayimage//创建图像实例$dst=imagecreatefromstring(file_get_contents($dst_path));$src=imagecreatefromstring(file_get_contents($src_path));//获取覆盖图宽高list($src_w,$src_h)=getimagesize($src_path);//复制覆盖图到目标图片,最后一个参数100是设置透明度(100是opaque),这里实现不透明效果,两个20是Overlay坐标位置imagecopymerge($dst,$src,20,20,0,0,$src_w,$src_h,100);//如果叠加图片本身有透明色,使用imagecopy方式//imagecopy($dst,$src,10,10,0,0,$src_w,$src_h);//输出图像列表($dst_w,$dst_h,$dst_type)=getimagesize($dst_path);switch($dst_type){case1://GIFheader('Content-Type:image/gif');imagegif($dst);休息;case2://JPGheader('Content-Type:image/jpeg');imagejpeg($dst);休息;case3://PNGheader('Content-Type:image/png');imagepng($dst);休息;默认值:中断;}imagedestroy($dst);imagedestroy($src);如果看不懂源码,请看上面的文章,我写的很清楚,代码也有注释~如果不能解决问题,请百度,如果不行,请留言给博主留言,博主会尽快回复您!大功告成,博主正在看巴萨打拉斯帕尔马斯呢!希望我家梅老板能继续逆天任意球得分!好的,再见!