phpqrcode生成含logo二维码
接上篇文章,由于体验效果不是很合理,重建使用 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二维码相关推荐
- thinkphp 使用phpqrcode生成带logo二维码 并生成海报
1-下载类库 composer require aferrandini/phpqrcode -vvv 2-common的方法 //$text 文本的内容 //$logo logo图片 function ...
- 使用phpqrcode生成带logo二维码 并生成海报
1-下载类库 composer require aferrandini/phpqrcode -vvv 2-common的方法 //$text 文本的内容 //$logo logo图片 function ...
- java关于Zxing 生成带Logo 二维码图片失真问题
java关于Zxing 生成带Logo 二维码图片失真问题 问题点 logo本身是高清图片,但是Zxing生成的二维码中,logo像素失真,感觉被严重压缩一样. 排查问题 是Graphics2D 绘制 ...
- QRCode 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式...
QRCode 扫描二维码.扫描条形码.相册获取图片后识别.生成带 Logo 二维码.支持微博微信 QQ 二维码扫描样式 参考链接:https://github.com/bingoogolapple/B ...
- qrcode生成带logo二维码
qrcode生成带logo二维码 要点:因为qrcode生成二码后会把canvas隐藏,华为手机不生效且微信不支持canvas长按识别,需要把canvas转图片: 1 . 引入文件 <scrip ...
- python 生成带logo二维码
-- coding: utf-8 -- """ pip install image pip install qrcode author = 'haiousy@163.co ...
- php使用QRcode生成带logo二维码
$url = 'http://www.baidu.com'; //二维码内容 可以文字.连接 都行 $errorCorrectionLevel = 'M';//容错级别 容错级别L(7%).M(15% ...
- 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式
GitHub项目的链接地址 目录 功能介绍 常见问题 效果图与示例 apk Gradle 依赖 布局文件 自定义属性说明 接口说明 关于我 功能介绍 ZXing 生成可自定义颜色.带 logo 的二维 ...
- PHP 生成带logo二维码并修改背景颜色,利用画布布局二维样式
二维码 先上图 <?phpinclude 'lib/phpqrcode.php'; require_once 'lib/image.php'; $value = "localhost/ ...
最新文章
- Hadoop HDFS文件操作的Java代码
- java锁的种类以及辨析(转载)
- 设计模式 - 迭代器模式(iterator pattern) 具体解释
- spark RDD官网RDD编程指南
- Python之pandas:pandas中常见的数据类型转换四大方法以及遇到的一些坑之详细攻略
- 好大夫王航:长尾开发者应尽快接入百度轻应用
- python自学要多久-python从入门到精通需要多久?你需要先明白这两个点
- 2022-01-11每日刷题打卡
- 腾讯云图(TCV)使用指南
- SAXReader的使用
- 继电反馈法自整定_PID控制及整定算法
- vi/vim怎么对多行文字进行注释/取消注释
- 比较两个路径的几种方式
- web IDE theia-ide安装
- js的validate插件异步效验
- 【黑马程序员】23种设计模式——UML图
- Python在cmd下pip快速下载安装包的国内安装镜像
- gulp-sass打包scss文件中报错Error in plugin “gulp-sass“Message:
- let 连续复制_【进阶4-4期】Lodash是如何实现深拷贝的
- 分库分表 PK NewSQL数据库!看了都说好!