本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
% {' b8 u8 o) l, [, s7 O3 E h( N---------------------------------------------------------------------------------------------------1 e: N3 P* n5 Q( y8 k0 d/ l5 t
二维码的分类* S" L5 c0 x [8 `+ X! ~
线性堆叠式二维码
3 Q. C! f0 R( Q+ [# b* S* k: e
' U% p, j# V% Q0 T2 x' b- s矩阵式二维码) S, y/ c4 _& `6 {& m
" D6 M5 z m% J3 d+ T0 w
二维码的优缺点
; t( g' C& A( X2 q# R( N, T优点
* F0 o1 p& m' l9 i5 E信息容量大8 A+ q- ?1 ?. Y* Z- Y
6 \' N' S4 A, L( t' `" a$ b0 J7 Z
编码范围广; L5 c9 r: a. v0 b# [9 t' T5 s
) M& }8 r8 l3 s) \0 {# k9 G- m! }
容错能力强0 _# B- k4 y( h5 |1 K; u
* W! M3 o9 q6 w, Y# R7 k译码可靠性高
) q. V# g: i$ N
5 L( ?8 T8 Z- Y+ j可引入加密措施+ J6 j) z( n+ A3 L% F
; }8 I4 ]+ }! D/ @0 x1 U4 }成本低,易制作
: g+ C0 y: J6 ? _" b+ W9 r
$ X! S' y: n; z _' f0 J缺点
, ~% K; f9 Y4 f. M" I+ n0 T二维码技术成为手机病毒、钓鱼网站传播的新渠道, z" g, r) K8 [8 @3 |- B. r+ p
/ h( ?' {( G( M8 K信息泄密
+ _2 m' x4 K) K5 c
* g' |/ e$ N/ L% [7 b目前流行的三大国际标准
7 Q( T! J( D. d; A# CPDF417:不支持中文
% Y6 y* h* X$ g- l S# ?/ y! y6 T+ O+ m, O" F3 D
DM:专利未公开,需支付专利费用
4 a* y7 b2 P8 C. i' z( `+ _' \9 a8 l8 t
QR CODE:专利公开,支持中文! ?' ~) A+ y% y
: w' e( s& d/ j" z! Q7 s" tQR CODE 纠错能力
/ @1 n: a' A4 |' CL级:约可纠错7%的数据码字( h% O0 E( ] U y, M0 O- B
& l7 u+ B8 Z/ L/ I2 N! UM级:约可纠错15%的数据码字$ \6 p m% C7 V% o/ e
0 |" T+ c& Z7 k+ d0 LQ级:约可纠错25%的数据码字4 z2 r6 W0 O) B
) I; y# v' `$ e1 w2 F9 T QH级:约可纠错30%的数据码字! {. \6 q0 Q' Z+ S
8 `, P# \0 h* _) W3 b
前提条件) p) c# ^' z% k! M7 I
GD库
3 W. _2 I# i' p9 R: G6 h2 m G J5 s) E
一、PHP生成QR CODE$ y2 C0 d: a3 u3 w3 C* R: e/ q% Q
官网:http://phpqrcode.sourceforge.net/. z' O; H6 f( I# |2 c+ Y d/ h3 e
0 u! g: K$ a$ @8 Q L/ o. _1 `
下载源码:https://github.com/endroid/qr-code* j6 l4 ?% v# K% L5 A4 M
e3 B% M0 |# f
目录结构
* K6 Q9 }( D/ g8 Q- J0 x) _/ W" n
' Z* G7 C: @, ?+ Q
4 X' u, l; f! Y7 R2 i' h1、qrcode_create.php8 E9 W- m" u1 z$ L8 Y
ps:生成普通二维码
( f! d: w) u+ E
4 M% Y% L6 i' _7 S( r$ J- include_once "./qrcode/phpqrcode.php";/**
. Y8 \' W8 F: [4 M/ @ Y" S - 5 w" @' c4 d4 f& e
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
5 X, ], m% x% Z& m: I: g - + v3 U9 n6 B0 E7 I/ t
- * 在浏览器上直接生成一个二维码(内容为abc)
) {5 j: [# z/ A: I - * }2 N7 r) a! q A. @! D2 Z
- */QRcode::png("abc");
1 R6 {- q. i6 L0 A$ D o# U" x
( ]3 }- ]6 W8 S0 t3 _6 I- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
% y0 T3 t0 C; j
+ H e5 p, p/ T" j- * 生成文件到本地* f* l! j" h4 m3 P9 f: q7 G
0 @* }" [5 e* X; K4 a- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印): L5 l9 A: e% [- s& j
# U5 g r7 p7 C) C# e9 I- * PS:$saveandprint源码的p6参数做了修改
2 J# P% k' J! p
, W% j9 n C0 Q4 I- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);* b- Q9 [$ }2 H! F4 A+ w* Z
8 D4 [+ L4 H0 h, I9 C' o, `- 5 u' s% W Y1 i6 s& s# z
复制代码
. C/ r7 H6 I0 ?" D5 M2、qrcode_logo.php
* W% X) L1 L- X( Aps:生成带Logo的二维码- ( l! a1 o( X) A) C/ m0 c& }+ A2 e+ o: ^
- /**
% D6 w% h" Y4 k D! z1 O - 5 ? |7 G. N& ~
- * Created by PhpStorm.
z' J# X+ |; i0 g
9 p- d, K6 D! \; n- * User: user2 z* P! ~# v F; g
- : c/ c. N/ F3 \/ L& r& o ?
- * Date: 2018/8/167 W' t1 r2 Y1 N, D) [% D$ F
- 4 |& `) b" Y) u7 l$ B& s1 `8 ]
- * Time: 10:436 l3 o- X5 c( v/ g' k3 r
) U- L; B1 }- o- */include "./qrcode/phpqrcode.php";$txt = "测试内容";, [( r% E: W% r" d- F" Z
3 \/ Q0 ~) h" y& L" O- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
; \' Q' F/ q# [& f - " }. H0 u i! ~
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
2 f. l% E0 g! _
- G7 ~5 f: _& S0 Q7 ?+ u# U$ w- $margin = 2;//边距# \7 Q: M9 \) L5 m4 K% k
v7 n" N3 Y5 m2 H- k B" Z1 j8 F8 H$ N- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片& m! v: g" c4 f6 n
- ' S% `& L5 c) f
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
0 c6 {) K1 E4 O' p/ d - " v' J4 i: A4 j' H
- $QR = $picPathAndName; //已经生成的原始二维码图9 y3 B3 ~2 l7 B' |4 j- j3 ~
; C' J4 Q9 A. {- $Logo = './pic/logo.png'; - W# |7 t0 h5 P* l" i
) Y8 x) U8 M' k5 ~5 V( G- $Logo_re = './pic/test_logo.png';
) @0 d; Y! ?, [1 i- y L
, B9 c8 O) o" V" b1 A- $QR = imagecreatefromstring(file_get_contents($QR));
0 T4 D2 o9 W6 G* m) m8 h0 ~0 c
2 o; C& P# e5 H/ _- $Logo = imagecreatefromstring(file_get_contents($Logo));
0 r/ F* l- ^* A - , q5 U) Q8 I1 Y) r* u% y7 A
- $QR_width = imagesx($QR); //二维码图片宽度: U8 C, E- N/ ]7 m4 `
5 b" i l) @% m/ R* ~- $QR_height = imagesy($QR); //二维码图片高度
- E, @1 R4 k8 j4 Q3 [
1 A0 @4 i" d8 v, k! B' _% c- $logo_width = imagesx($Logo); //logo图片宽度
2 O6 V% }, u$ I6 q5 l
; m) X7 x" q# h- [5 W3 D- $logo_height = imagesy($Logo); //logo图片高度
2 o& i, `! q/ @
' E2 O7 x+ N \9 P+ t* |- $logo_qr_width = $QR_width / 5; * W* ~* _1 ~- A1 j% z: h
- 2 c, m( k# Z* ], a) R* `# V0 o) t% O
- $scale = $logo_width / $logo_qr_width;
! I J; ? Y+ z' e R - 9 e9 T. n; O( _+ H' Z
- $logo_qr_height = $logo_height / $scale;
5 R5 Y M" n4 b+ ]7 ~
4 J- P. q" V4 L( j- $from_width = ($QR_width - $logo_qr_width) / 2;. x( d8 p. T5 d( g1 C( j
- $ L1 V& j' ~7 Q+ Z( g/ a. S5 j
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); ' M$ y ^& O5 w! Q! ^: Y- N, Z
- 0 ^6 @5 `& z5 k
- //输出图片
' N5 W C7 }. G
$ A0 R. G. ^, f+ U3 C: C! t- imagepng($QR, $Logo_re);
( C2 o# E. ?' R2 I' b
+ [8 ]* J, z1 i) S8 l0 x- }
2 A" D8 C7 t& y8 s/ b
! n6 L! X8 b* H6 c- ; D8 s; |& L/ }/ `
复制代码 3、qrcode_vcard.php (生成电子签名)
6 B* A% u, C& K4 l) Q
% ~. K* p8 K' C Q. KvCard格式:https://zh.wikipedia.org/wiki/VCard6 y+ `7 o# Q; R' ^. W6 @1 V/ t
7 r% V# f( a* J/ k0 e5 ?$ a3 c
6 _3 K9 \$ e( W; l o6 N7 Z- * Created by PhpStorm.
3 o: a2 L+ r! L w
4 C% k$ U5 c9 | N. o! N; J6 [1 }- * User: user
* |+ t. Z1 `/ P3 p" V7 G+ o, l2 c - D& y3 f y( _6 e5 |
- * Date: 2018/8/15
* w4 S$ p& v; Z4 q! r! Z( E - 9 a& k0 q; L; h* R* c% l
- * Time: 23:00
F _' t0 h' C) E% F - 1 q E6 N' g0 N) i# j
- */require_once "./qrcode/phpqrcode.php";/**
+ d/ y+ ?, E( x: G5 [9 P. B
& g' h0 _8 X8 m1 ?5 s: T- * 生成电子签名% W H _9 p* o$ u
- 2 E+ \% o7 \% w E
- * PS;使用微信扫描二维码
/ b4 X1 D0 d" g+ L& y - & b( H) [7 [- F1 n1 C& `( y2 p/ K$ z$ k7 c
- */$content = 'BEGIN:VCARD' . "\n";//起始标志" \8 W9 |' b8 U# c/ Q3 ~$ x
- 6 J4 Y* G n. F! M7 w
- $content .= 'VERSION:2.1' . "\n";//当前版本6 k6 C( k6 t* T' i- O8 R- B# D
- 6 x2 R2 s. w/ N
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
! e* ^6 E9 h E& w' [
3 Q( I+ ?" M$ Q9 [9 b- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
, ^/ |8 K8 U4 J8 Q8 R- D5 R - 9 I: ~ F" f7 Z ?9 V+ ~8 ^4 Q+ Q
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位7 {4 u$ b, s$ y' [. N) m6 _
+ D9 u7 ^/ x$ b* @, m; S- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话, r4 F: J1 z, e; d& k1 i) X
- 2 c; @4 c' @% M& s3 i
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址# l" E, N$ C0 S
. X, d% j1 ]5 h- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
/ r% o; R# V1 A# ^2 J8 } p& r
& [3 Q) ~, ?! j- P" z+ F- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
5 R s0 @( b P
4 X. q" v; D. @8 z- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱3 c5 D- P4 N' P& }9 \
- * p" ?( x4 U5 x8 H, K# h3 B& g; r
- $content .= 'URL:www.baidu.com' . "\n";//个人主页 u2 j! ~: b# b3 r# X6 w
- 6 O9 }( s x; Z
- $content .= 'END:VCARD' . "\n";//结束标志1 D8 `$ W3 ~6 x: _/ k
- E8 G8 Q( H: A5 E8 Y: j
- QRcode::png($content);
/ @3 d6 w. Y! j l ]- N
+ b f7 l# Z q& ~ |
. e( }9 d7 l3 `$ [( M% l$ t" G
复制代码
9 _1 R0 C& J# l, t& C相关文章推荐:' ~' M |8 _1 f* s
1.PHP生成微信二维码实例5 O7 U/ Z, q# A+ Z* N1 L
2.php网址转换生成二维码9 \4 e' D" p; V! X/ Y, F
相关视频推荐:
7 U1 D& d* p0 ]) {0 A& b1.独孤九贱(4)_PHP视频教程5 m: f. g2 Q7 B+ j+ T# J5 y" U
二、JQUERY生成QR CODE7 g! b% U/ T$ `% r/ q
源码地址:https://github.com/jeromeetienne/jquery-qrcode
% `1 w# k. E9 f4 I) ]) Q! O( ^
9 ^! e7 x8 |. ?9 K7 Ejquery_create.php
0 w& C5 @9 D3 e K# H. m# u9 f0 f& K0 N8 ~. m! S4 J
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 s$ K' r0 y; e# p
三、PHP识别二维码
& q5 u. i' z1 A( `/ N* c1、方法一, |; Z- b) r: U/ M+ R6 r9 f6 [
环境需求,安装如下扩展# x9 F% C) X2 M" P
- ImageMagick2 I, F2 I: o; _
- zbar
2 m6 Z0 _0 p3 D- php-zbarcode: P& C% z$ b, r1 H
+ A8 b4 e6 C( y0 f# U- e2 f2、方法二. y N. K# W3 B
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
0 i: V1 D6 \9 g) F0 p/ X/ EqrReader类:https://github.com/baagee/php_QrReader! f6 ] ?) f0 r5 G9 I
* R# }/ b- U3 `) g! h6 A
% o. v4 l q; F- $qrcode = new QrReader('./test_logo.png'); //图片路径+ k# U) b# e1 }2 ~
- # n% |- b7 Y1 n. i$ P7 X& p% d
- $text = $qrcode->text(); //返回识别后的文本 o, K( S% q7 s" x8 G
- 9 g' G& Y: u9 C7 }" b2 B3 j
- echo $text;+ y0 o7 Y f4 a/ _
4 p O. p$ h# z5 P" N8 q0 U% ~
; ?) I2 H n/ I2 T
复制代码
2 c2 L" m, P* _* y5 p. D, C. P( x: D链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y74 q1 f* Y) N* a4 A. ^9 ^+ u
/ N7 x# L* L9 B& M7 h' s( o S5 _: `# B. V1 [0 I
1 ? B9 `: ]; E3 P- _4 B. a3 E" I& [7 S) v. ^$ m9 u5 E: t
! P" P. v9 O0 @( h) W3 g$ a4 s
- o7 v5 [# ^# k, C$ ?. s5 s9 l
3 _/ n0 t. Z& N% }. M, l. i) `1 H8 Z) K! B
|