接上篇文章,由于体验效果不是很合理,重建使用 php 的 GD库进构建新的方法,所需文件:phpqrcode.php
下载方法很多,可官网自行解决问题
话不多说,直接切入正题:
首先 php文件中引入 phpqrcode.php文件

require "./phpqrcode.php";
$text = "******************"; //二维码展示的内容
$logoDir = "./images/shoplogo.png";//二维码中间 logo
$QRDir = "./images/base.png"; //生成的图片路径
if (file_exists($QRDir)) {unlink($QRDir);
}
$errorCorrectionLevel = 'H';//容错率
$matrixPointSize = 20;//生成的图片的大小
$margin = 2;
$qrcode = new QRcode();
$qrcode->png($text, $QRDir, $errorCorrectionLevel, $matrixPointSize, $margin);
$resource = imagecreatefrompng($logoDir);
$image_width = imagesx($resource);
$image_height = imagesy($resource);$targetImg = imagecreatetruecolor($image_width, $image_height);
imagesavealpha($targetImg, true);//保留图片的透明通道
$targetImgBackground = imagecolorallocatealpha($targetImg, 255, 255, 255, 127);//将目标图片设置成透明背景
imagefill($targetImg, 0, 0, $targetImgBackground);//填充透明背景

处理中部的 logo图片

$radius = 15; //圆角半径
// lt(左上角)
$lt_corner = litter_corner($radius);
imagecopymerge($resource, $lt_corner, 0, 0, 0, 0, $radius, $radius, 100);
// lb(左下角)
$lb_corner = imagerotate($lt_corner, 90, 0);
imagecopymerge($resource, $lb_corner, 0, $image_height - $radius, 0, 0, $radius, $radius, 100);
// rb(右上角)
$rb_corner = imagerotate($lt_corner, 180, 0);
imagecopymerge($resource, $rb_corner, $image_width - $radius, $image_height - $radius, 0, 0, $radius, $radius, 100);
// rt(右下角)
$rt_corner = imagerotate($lt_corner, 270, 0);
imagecopymerge($resource, $rt_corner, $image_width - $radius, 0, 0, 0, $radius, $radius, 100);
$image = "./images/logoFinal.png";//过渡圆角 logo
imagepng($resource, $image);

二维码与 logo合并

$QRHasLogo = mergeImg($QRDir, $image);
if (file_exists($image)) {unlink($image);
}
//与背景合并
$path_1 = './images/fkpay11.jpg'; //背景图片
// 图片二
$path_2 = $QRHasLogo;
// 创建图片对象
$image_1 = imagecreatefromjpeg($path_1);
$image_2 = imagecreatefrompng($path_2);
// 合成图片
imagecopymerge($image_1, $image_2, 167, 500, 0, 0, imagesx($image_2), imagesy($image_2), 100);
// 输出合成图片
imagepng($image_1, $QRDir);

店铺名称转图片

$save_path = "./images/texttopng.png";
$text = "小二郎的店铺";//显示的文字
$font_size = 70;//字体大小
$save_path = textToPng($save_path,$text,$font_size);

将文件与生成好的二维码图片进行合并

$QRDir = mergeImg($QRDir,$save_path,820,120,50);

处理的几个方法:

/*** 设置 logo 圆角* @param $radius* @return resource*/
function litter_corner($radius)
{$img = imagecreatetruecolor($radius, $radius);imagesavealpha($img, true);$bgcolor = imagecolorallocatealpha($img, 0, 0, 0, 127);$fgcolor = imagecolorallocate($img, 0, 0, 0);imagefill($img, 0, 0, $bgcolor);imagefilledarc($img, $radius, $radius, $radius * 2, $radius * 2, 180, 270, $fgcolor, IMG_ARC_PIE);imagecolortransparent($img, $fgcolor);return $img;
}/*** 二维码与 logo合并* @param $QRDir 背景图片* @param $image 小图片* @return mixed*/
function mergeImg($QRDir, $image,$height = 0,$logow=0,$logoh=0)
{
//二维码与 logo合并$QR = imagecreatefrompng($QRDir);//这里qr.png是二维码的图片$logo = imagecreatefrompng($image);//圆角二维码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 + $logow;$scale = $logo_width / $logo_qr_width;$logo_qr_height = $logo_height / $scale + $logoh;$from_width = ($QR_width - $logo_qr_width) / 2;
//重新组合图片并调整大小imagecopyresampled($QR, $logo, $from_width, $from_width+$height, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);$QRHasLogo = $QRDir;//最终得到的带有logo的二维码
//$QRHasLogo = "./images/QRHasLogo.png";//最终得到的带有logo的二维码imagepng($QR, $QRHasLogo);return $QRHasLogo;
}/*** 文本转图片* @param $save_path 文本图片存储路径* @param $text   将要转的文本* @param $font_size 文本大小* @return mixed*/
function textToPng($save_path,$text,$font_size){$font = "./font/msyh.TTF";//字体类型$fontarea = imagettfbbox($font_size, 0, $font, $text); //确定会变化的字符串的位置$text_width = $fontarea[2] - $fontarea[0] + ($font_size / 3); //字符串文本框长度$text_height = $fontarea[1] - $fontarea[7] + ($font_size / 3); 字符串文本框高度$img = imagecreate($text_width, $text_height);
//$img = imagecreate(500, 30);//创建一个长为500高为16的空白图片imagecolorallocate($img, 255, 255, 255);//设置图片背景颜色,这里背景颜色为#ffffff,也就是白色$black = imagecolorallocate($img, 0, 0, 0);//设置字体颜色,这里为#000000,也就是黑色imagettftext($img, $font_size, 0, 6, $font_size + 18, $black, $font, $text);//将ttf文字写到图片中header('Content-Type: image/png');//发送头信息imagepng($img, $save_path);//输出图片return $save_path;
}

到此就已经完成了类似支付宝收款码的图片了。如有参考,可将代码整合成文件直接使用
创作不易,点个赞再走呗!!!

phpqrcode生成含logo二维码相关推荐

  1. thinkphp 使用phpqrcode生成带logo二维码 并生成海报

    1-下载类库 composer require aferrandini/phpqrcode -vvv 2-common的方法 //$text 文本的内容 //$logo logo图片 function ...

  2. 使用phpqrcode生成带logo二维码 并生成海报

    1-下载类库 composer require aferrandini/phpqrcode -vvv 2-common的方法 //$text 文本的内容 //$logo logo图片 function ...

  3. java关于Zxing 生成带Logo 二维码图片失真问题

    java关于Zxing 生成带Logo 二维码图片失真问题 问题点 logo本身是高清图片,但是Zxing生成的二维码中,logo像素失真,感觉被严重压缩一样. 排查问题 是Graphics2D 绘制 ...

  4. QRCode 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式...

    QRCode 扫描二维码.扫描条形码.相册获取图片后识别.生成带 Logo 二维码.支持微博微信 QQ 二维码扫描样式 参考链接:https://github.com/bingoogolapple/B ...

  5. qrcode生成带logo二维码

    qrcode生成带logo二维码 要点:因为qrcode生成二码后会把canvas隐藏,华为手机不生效且微信不支持canvas长按识别,需要把canvas转图片: 1 . 引入文件 <scrip ...

  6. python 生成带logo二维码

    -- coding: utf-8 -- """ pip install image pip install qrcode author = 'haiousy@163.co ...

  7. php使用QRcode生成带logo二维码

    $url = 'http://www.baidu.com'; //二维码内容 可以文字.连接 都行 $errorCorrectionLevel = 'M';//容错级别 容错级别L(7%).M(15% ...

  8. 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式

    GitHub项目的链接地址 目录 功能介绍 常见问题 效果图与示例 apk Gradle 依赖 布局文件 自定义属性说明 接口说明 关于我 功能介绍 ZXing 生成可自定义颜色.带 logo 的二维 ...

  9. PHP 生成带logo二维码并修改背景颜色,利用画布布局二维样式

    二维码 先上图 <?phpinclude 'lib/phpqrcode.php'; require_once 'lib/image.php'; $value = "localhost/ ...

最新文章

  1. Hadoop HDFS文件操作的Java代码
  2. java锁的种类以及辨析(转载)
  3. 设计模式 - 迭代器模式(iterator pattern) 具体解释
  4. spark RDD官网RDD编程指南
  5. Python之pandas:pandas中常见的数据类型转换四大方法以及遇到的一些坑之详细攻略
  6. 好大夫王航:长尾开发者应尽快接入百度轻应用
  7. python自学要多久-python从入门到精通需要多久?你需要先明白这两个点
  8. 2022-01-11每日刷题打卡
  9. 腾讯云图(TCV)使用指南
  10. SAXReader的使用
  11. 继电反馈法自整定_PID控制及整定算法
  12. vi/vim怎么对多行文字进行注释/取消注释
  13. 比较两个路径的几种方式
  14. web IDE theia-ide安装
  15. js的validate插件异步效验
  16. 【黑马程序员】23种设计模式——UML图
  17. Python在cmd下pip快速下载安装包的国内安装镜像
  18. gulp-sass打包scss文件中报错Error in plugin “gulp-sass“Message:
  19. let 连续复制_【进阶4-4期】Lodash是如何实现深拷贝的
  20. 分库分表 PK NewSQL数据库!看了都说好!

热门文章

  1. C++打怪升级(二)- 引用详解
  2. cocos creator 部署微信云开发
  3. MongoDB Capped Collection 使用
  4. 《那些年啊,那些事——一个程序员的奋斗史》——51
  5. 20170612-点滴记录
  6. java 单例模式双重检索_Java单例模式的双重检测
  7. C语言实现itoa函数【精简】
  8. OCR - 关于OCR技术体系的发展的了解
  9. purge mysql_MySQL:Innodb purge线程略解
  10. 浅谈站长如何学会判断网站的价值