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

php利用php qr code生成二维码怎么输出

发布网友 发布时间: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就可以生成二维码了,当然您的PHP环境必须开启支持GD2。
  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还是什么的、求名字 请大大们给个英文名 大叶芹叶子可以吃吗 如果只能选择不背单词、开言单词、完美万词王、百词斩,你会选择哪个? 请问夫妻性生活是怎样过的。不想要小孩要带套吗?没见过夫妻带套啊! 结婚当天要不要带避孕套来性生活 有什么好的背单词的软件推荐。不要百词斩。 一直很犹豫要不要买本百词斩象形5000来背单词,用过的朋友们给个建议吧。 和自己的女朋友(或男朋友)性生活是否带套? 在恋爱过程中,性生活一定要带安全套吗? 百词斩不要收费但是感觉比较粗糙,秒词邦要收费但是我觉得挺好的,我高三了,其实特别喜欢秒词邦怎么办? 做爱带避孕套卫生吗 夫妻之间一般都戴避孕套吗 大学英语*背单词软件,不要再说百词斩,因为那里面没有*的 夫妻性生活中使用避孕套,既能避孕,又能预防感染艾滋病吗? 正常的夫妻,他们生活一辈子都要带那个吗? 推荐一些学习英语用的APP,我是高中生。不要再推荐百词斩啊乐词这种类似背单词的,我已经下载了。希望 夫妻之间需要带安全套? 百斩词怎么样? 平时过性生活一定要戴套吗? 百词斩这个软件用了真的有效果? 做爱要带套吗 我听我朋友说正常的夫妻,他们生活都不会戴那个,真的吗 加入粉丝俱乐部就等于加入粉籍了吗? 如何可以见到自己喜欢的明星 争做时代峰峻百分百出道记录保持者 是什么意思? 时代峰峻3f是什么意思 tf家族三代粉丝名和应援色是什么? 时代峰峻公司四代是怎么挖出来的 宋文嘉还在时代峰峻吗 邓恩熙是怎么被时代峰峻签下来的? 姚景元什么时候加入时代峰峻 phpqrcode怎样生成带logo的二维码 能不能设计一个蓝牙耳机当助听器,这样我在外面接电话,人家就不知道我听力不好。 助听器的蓝牙功能有什么用? 智能手机能当助听器用吗 蓝牙耳机当麦克风使用。 有没有什么助听器兼并蓝牙耳机的功能? 有没有很萌的表情包,我要给我老公撒娇 爆萌的qq表情!! 这个很萌的小姑娘表情叫什么名字呀,有没有同一系列的 求助,这个眼泪汪汪超萌的表情叫什么名字啊? 求萌的动漫女生表情
  • 焦点

最新推荐

猜你喜欢

热门推荐