⽀付⽀付宝⽀付⽣成⼆维码的⽅法(php⽣成⼆维码的三种
⽅法)
如果图简单,可以⽤在线⽣成
pan.baidu/share/qrcode?w=150&h=150&url=www.xinzhenkj
最简单最实例的goolge开源⽅法
代码如下:
[php]
1. <span >$urlToEncode="www.helloweba";
2. generateQRfromGoogle($urlToEncode);
3. /**
4. * google api ⼆维码⽣成【QRcode可以存储最多4296个字母数字类型的任意⽂本,具体可以查看⼆维码数据格式】
5. * @param string $chl ⼆维码包含的信息,可以是数字、字符、⼆进制信息、汉字。
6. 不能混合数据类型,数据必须经过UTF-8 URL-encoded
7. * @param int $widhtHeight ⽣成⼆维码的尺⼨设置
8. * @param string $EC_level 可选纠错级别,QR码⽀持四个等级纠错,⽤来恢复丢失的、读错的、模糊的、数据。
9. * L-默认:可以识别已损失的7%的数据
10. * M-可以识别已损失15%的数据
11. * Q-可以识别已损失25%的数据
12. * H-可以识别已损失30%的数据
13. * @param int $margin ⽣成的⼆维码离图⽚边框的距离
14. */
15. function generateQRfromGoogle($chl,$widhtHeight ='150',$EC_level='L',$margin='0')
16. {
17. $chl = urlencode($chl);
18. echo '<img src="le/chart?chs='.$widhtHeight.'x'.$widhtHeight.'
19. &cht=qr&chld='.$EC_level.'|'.$margin.'&chl='.$chl.'" alt="QR code" widhtHeight="'.$widhtHeight.'
20. " widhtHeight="'.$widhtHeight.'"/>';
21. } </span>
2.php类库PHP QR Code
下载官⽹提供的类库后,只需要使⽤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表⽰是否保存⼆维码并显⽰。
代码如下:
[php]
1. <span >public static function png($text, $outfile=false, $level=QR_ECLEVEL_L, $size=3, $margin=4,
2. $saveandprint=false)
3. {
4. $enc = QRencode::factory($level, $size, $margin);
5. return $enc->encodePNG($text, $outfile, $saveandprint=false);
6. } </span>
调⽤PHP QR Code:
[php]
1. <span >include 'phpqrcode.php';
2. QRcode::png('www.helloweba'); </span>
实际应⽤中,我们会在⼆维码的中间加上⾃⼰的LOGO,已增强宣传效果。那如何⽣成含有logo的⼆维码呢?其实原理很简单,先使⽤PHP QR Code⽣成⼀张⼆维码图⽚,然后再利⽤php的image相关函数,将事先准备好的logo图⽚加⼊到刚⽣成的原始⼆维码图⽚中间,然后重新⽣成⼀张新的⼆维码图⽚。
[php]
1. <span >include 'phpqrcode.php';
2. $value = 'www.helloweba'; //⼆维码内容
3. $errorCorrectionLevel = 'L';//容错级别
4. $matrixPointSize = 6;//⽣成图⽚⼤⼩
5. //⽣成⼆维码图⽚
6. QRcode::png($value, 'qrcode.png', $errorCorrectionLevel, $matrixPointSize, 2);
7. $logo = 'logo.png';//准备好的logo图⽚
8. $QR = 'qrcode.png';//已经⽣成的原始⼆维码图
9.
10. if ($logo !== FALSE) {
11. $QR = imagecreatefromstring(file_get_contents($QR));
12. $logo = imagecreatefromstring(file_get_contents($logo));
13. $QR_width = imagesx($QR);//⼆维码图⽚宽度
14. $QR_height = imagesy($QR);//⼆维码图⽚⾼度
15. $logo_width = imagesx($logo);//logo图⽚宽度
16. $logo_height = imagesy($logo);//logo图⽚⾼度
17. $logo_qr_width = $QR_width / 5;
18. $scale = $logo_width/$logo_qr_width;
19. $logo_qr_height = $logo_height/$scale;
20. $from_width = ($QR_width - $logo_qr_width) / 2;
21. //重新组合图⽚并调整⼤⼩
22. imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,
23. $logo_qr_height, $logo_width, $logo_height);
24. }
25. //输出图⽚
26. imagepng($QR, 'helloweba.png');
27. echo '<img src="helloweba.png">'; </span>
对于第⼆种⽅法:如果不使⽤$filename,第⼆个参数为false的时候,就不会把⼆维码图⽚保存,⽽是直接输出。
现在还有⼀些如有:libqrencode与QRcode Perl CGI & PHP scripts⼆维码⽣成插件⼤家喜欢也可看看。
3.基于jquery的⼆维码⽣成插件qrcode,在页⾯中调⽤该插件就能⽣成对应的⼆维码。
qrcode其实是通过使⽤jQuery实现图形渲染,画图,⽀持canvas(HTML5)和table两种⽅式,
如何使⽤
(1)、⾸先在页⾯中加⼊jquery库⽂件和qrcode插件。
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.qrcode.min.js"></script>
(2)、在页⾯中需要显⽰⼆维码的地⽅加⼊以下代码:
<div id="code"></div>
(3)、调⽤qrcode插件。
qrcode⽀持canvas和table两种⽅式进⾏图⽚渲染,默认使⽤canvas⽅式,效率最⾼,当然要浏览器⽀持html5。直接调⽤如下:
$('#code').qrcode("www.helloweba"); //任意字符串
您也可以通过以下⽅式调⽤:
$("#code").qrcode({
render: "table", //table⽅式
width: 200, //宽度
height:200, //⾼度
text: "www.helloweba" //任意内容
});
这样就可以在页⾯中直接⽣成⼀个⼆维码,你可以⽤⼿机“扫⼀扫”功能读取⼆维码信息。
(4).识别中⽂
我们试验的时候发现不能识别中⽂内容的⼆维码,通过查多⽅资料了解到,jquery-qrcode是采⽤charCodeAt()⽅式进⾏编码转换的。⽽这个⽅法默认会获取它的Unicode编码,如果有中⽂内容,在⽣成⼆维码前就要把字符串转换成UTF-8,然后再⽣成⼆维码。您可以通过以下函数来转换中⽂字符串:
function toUtf8(str) {
var out, i, len, c;
out = "";
len = str.length;
for(i = 0; i < len; i++) {
c = str.charCodeAt(i);
if ((c >= 0x0001) && (c <= 0x007F)) {
out += str.charAt(i);
} else if (c > 0x07FF) {
out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
} else {
out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
jquery在线库out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
}
}
return out;
}
以下⽰例:
var str = toUtf8("普罗旺斯没有故事");
$('#code').qrcode(str);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论