问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

phpqrcode怎样生成带logo的二维码

发布网友 发布时间:2022-04-07 08:45

我来回答

2个回答

懂视网 时间:2022-04-07 13:07

使用PHP语言生成二维码,还是挺有难度的,当然调用生成二维码图片的接口除外,如果自己写代码生成,真的无从下手。然而,我们可以使用phpqrcode这个现成的类文件,PHP二维码生成类库,利用它可以轻松生成二维码。

前期准备:

1.phpqrcode类文件下载,下载地址:https://sourceforge.net/projects/phpqrcode/

2.PHP环境必须开启支持GD2扩展库支持(一般情况下都是开启状态)

方法解读:

下载下来的类文件是一个压缩包,里边包含很多文件和演示程序,我们只需要里边的phpqrcode.php这一个文件就可以生成二维码了。它是一个多个类的集合文件,我们需要用到里边的QRcode类(第2963行)的png()方法(第3090行):

public static function png($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4, $saveandprint=false) 
{
$enc = QRencode::factory($level, $size, $margin);
return $enc->encodePNG($text, $outfile, $saveandprint=false);
}

第1个参数$text:二维码包含的内容,可以是链接、文字、json字符串等等;

第2个参数$outfile:默认为false,不生成文件,只将二维码图片返回输出;否则需要给出存放生成二维码图片的文件名及路径;

第3个参数$level:默认为L,这个参数可传递的值分别是L(QR_ECLEVEL_L,7%)、M(QR_ECLEVEL_M,15%)、Q(QR_ECLEVEL_Q,25%)、H(QR_ECLEVEL_H,30%),这个参数控制二维码容错率,不同的参数表示二维码可被覆盖的区域百分比,也就是被覆盖的区域还能识别;

第4个参数$size:控制生成图片的大小,默认为4;

第5个参数$margin:控制生成二维码的空白区域大小;

第6个参数$saveandprint:保存二维码图片并显示出来,$outfile必须传递图片路径;

使用示例:

1. 生成二维码(生成图片文件)

// 1. 生成原始的二维码(生成图片文件)
function scerweima($url=''){
require_once 'phpqrcode.php';
$value = $url;//二维码内容
$errorCorrectionLevel = 'L';//容错级别 
$matrixPointSize = 5;//生成图片大小 
//生成二维码图片
$filename = 'qrcode/'.microtime().'.png';
QRcode::png($value,$filename , $errorCorrectionLevel, $matrixPointSize, 2); 
 
$QR = $filename;//已经生成的原始二维码图片文件 
 
 
$QR = imagecreatefromstring(file_get_contents($QR)); 
 
//输出图片 
imagepng($QR, 'qrcode.png'); 
imagedestroy($QR);
return '<img src="qrcode.png" alt="使用微信扫描支付">'; 
}
 
//调用查看结果
echo scerweima('https://www.baidu.com');

2. 在生成的二维码中加上logo(生成图片文件)

//2. 在生成的二维码中加上logo(生成图片文件)
function scerweima1($url=''){
require_once 'phpqrcode.php';
$value = $url;//二维码内容 
$errorCorrectionLevel = 'H';//容错级别 
$matrixPointSize = 6;//生成图片大小 
//生成二维码图片
$filename = 'qrcode/'.microtime().'.png';
QRcode::png($value,$filename , $errorCorrectionLevel, $matrixPointSize, 2); 
$logo = 'qrcode/logo.jpg'; //准备好的logo图片 
$QR = $filename;//已经生成的原始二维码图 
 
if (file_exists($logo)) { 
$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 / 4; //组合之后logo的宽度(占二维码的1/5)
$scale = $logo_width/$logo_qr_width; //logo的宽度缩放比(本身宽度/组合后的宽度)
$logo_qr_height = $logo_height/$scale; //组合之后logo的高度
$from_width = ($QR_width - $logo_qr_width) / 2; //组合之后logo左上角所在坐标点
//重新组合图片并调整大小
/*
*imagecopyresampled() 将一幅图像(源图象)中的一块正方形区域拷贝到另一个图像中
*/
imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,$logo_qr_height, $logo_width, $logo_height); 
} 
 
//输出图片 
imagepng($QR, 'qrcode.png'); 
imagedestroy($QR);
imagedestroy($logo);
return '<img src="qrcode.png" alt="使用微信扫描支付">'; 
}
 
//调用查看结果
echo scerweima1('https://www.baidu.com');

23158215bf3d61b312424279fa72d6e.png

3. 生成二维码(不生成图片文件)

//3. 生成原始的二维码(不生成图片文件)
function scerweima2($url=''){
require_once 'phpqrcode.php';
$value = $url;//二维码内容
$errorCorrectionLevel = 'L';//容错级别 
$matrixPointSize = 5;//生成图片大小 
//生成二维码图片
$QR = QRcode::png($value,false,$errorCorrectionLevel, $matrixPointSize, 2);
}
//调用查看结果
scerweima2('https://www.baidu.com');

*前两种方法,每调用一次都会在本地生成一张二维码图片,第三种方法,不生成文件,会直接输出二维码到浏览器中。

热心网友 时间:2022-04-07 10:15

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表示是否保存二维码并显示。
. 代码如下:
public static function png($text, $outfile=false, $level=QR_ECLEVEL_L, $size=3, $margin=4, $saveandprint=false)
{
$enc = QRencode::factory($level, $size, $margin);
return $enc->encodePNG($text, $outfile, $saveandprint=false);
}
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
收到别单位给的承兑汇票 我单位在给别的单位 这笔业务应该怎么做啊? 荔枝什么生肖 均衡器怎样调成重低音 电脑eq设置低音电脑EQ均衡器怎么设置达到最佳音效 第一排是什么单词 人生中的黑暗乐章——Agust 乐评 Sigur Ros乐队简介 ...在这部影片里面名字叫Agust还是什么的、求名字 请大大们给个英文名 大叶芹叶子可以吃吗 姚景元什么时候加入时代峰峻 邓恩熙是怎么被时代峰峻签下来的? 宋文嘉还在时代峰峻吗 时代峰峻公司四代是怎么挖出来的 tf家族三代粉丝名和应援色是什么? 时代峰峻3f是什么意思 争做时代峰峻百分百出道记录保持者 是什么意思? 如何可以见到自己喜欢的明星 加入粉丝俱乐部就等于加入粉籍了吗? php利用php qr code生成二维码怎么输出 如果只能选择不背单词、开言单词、完美万词王、百词斩,你会选择哪个? 请问夫妻性生活是怎样过的。不想要小孩要带套吗?没见过夫妻带套啊! 结婚当天要不要带避孕套来性生活 有什么好的背单词的软件推荐。不要百词斩。 一直很犹豫要不要买本百词斩象形5000来背单词,用过的朋友们给个建议吧。 和自己的女朋友(或男朋友)性生活是否带套? 在恋爱过程中,性生活一定要带安全套吗? 百词斩不要收费但是感觉比较粗糙,秒词邦要收费但是我觉得挺好的,我高三了,其实特别喜欢秒词邦怎么办? 做爱带避孕套卫生吗 夫妻之间一般都戴避孕套吗 能不能设计一个蓝牙耳机当助听器,这样我在外面接电话,人家就不知道我听力不好。 助听器的蓝牙功能有什么用? 智能手机能当助听器用吗 蓝牙耳机当麦克风使用。 有没有什么助听器兼并蓝牙耳机的功能? 有没有很萌的表情包,我要给我老公撒娇 爆萌的qq表情!! 这个很萌的小姑娘表情叫什么名字呀,有没有同一系列的 求助,这个眼泪汪汪超萌的表情叫什么名字啊? 求萌的动漫女生表情 求各种动漫等萌妹子表情包,邮箱1556488655@qq.com 谢谢咯 妹子今天说晚安开始用很萌的表情了,是不是有希望! 龙之谷手游超萌表情包汇总 手机版酷我音乐怎么弄桌面歌词 什么地方修理燃气灶 女性吃甲鱼有什么益处? 高一数学 必修二 直线方程 大题 御丰商用燃气灶售后电话 女生能吃甲鱼吗 女人吃鳖有什么好处
  • 焦点

最新推荐

猜你喜欢

热门推荐