本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。3 Z: W6 G# Z9 A" p! T
---------------------------------------------------------------------------------------------------* d% f) P7 a( a0 {2 ]- O" G
二维码的分类# |# ^0 E+ _3 f: o0 z( S
线性堆叠式二维码
3 _' j* C( n3 O9 h, ~) `, z& o5 U
矩阵式二维码3 V2 J! H6 i z
$ Y n: s4 r7 \5 A9 t二维码的优缺点0 g; x) A/ C) f! x( K9 H7 e. z7 `
优点
~2 R5 o/ A. q) a! }3 X8 I5 ]3 h4 V信息容量大
2 q* ^1 ~3 X" r& B6 v
& Q- w3 N9 e9 J6 E编码范围广% l" o! l2 R$ h) b
3 N% Q U& x$ i/ x% U: c" D6 r容错能力强& @1 m" D( a& o) D, H5 ~* c
8 m n1 a3 \9 j8 q
译码可靠性高
3 M, o) l5 X6 z& a# d. L$ J5 F4 _. D1 z: m8 c
可引入加密措施
- f2 @* Z3 a" S* S: N0 l4 O }7 Q9 s f" q# }
成本低,易制作$ }. a$ i3 T2 F
m% ?, [$ F% p5 L% I% P/ d! h缺点3 _2 Q6 v9 _, M4 k% ]' Z, v& r: T; B( }
二维码技术成为手机病毒、钓鱼网站传播的新渠道
/ w; x: h6 e9 `4 O D+ k: w7 @( R$ b$ c
信息泄密
( e. j; h! @' Y7 ~
3 N+ C/ f; _- b( g1 Y3 c% B/ ~目前流行的三大国际标准9 F' ]7 g$ b. A3 t/ o0 _
PDF417:不支持中文
/ v6 l, M" s0 F, e
g; |" a5 }/ f' C5 }1 {DM:专利未公开,需支付专利费用4 D/ ]' L8 g1 g# Z3 h `% u
* s/ C; a$ o8 |" X Q. K2 o
QR CODE:专利公开,支持中文
+ J2 B0 Z# l. @ k) a [8 z+ V6 d- [
' e: k% ^3 ~9 N- u: g4 X4 r, MQR CODE 纠错能力7 w/ S! W: n. i0 @
L级:约可纠错7%的数据码字
`1 Y/ e- Z+ c/ J
3 U) p9 T; L1 [; O( j- }. cM级:约可纠错15%的数据码字/ z5 A7 ^' ~9 `( p' ?6 d( V
, s0 s# x5 e1 M: i: o7 uQ级:约可纠错25%的数据码字' Q% f8 X! i9 v9 _2 s
8 r: x; w6 J& e) }% Y% s% dH级:约可纠错30%的数据码字
8 A" I# u$ Z O2 F7 K3 f% _( B0 A; g5 |
前提条件
( J; u, v) N3 @4 F ]( p$ mGD库
& h/ S8 m! G% G) n a% ~2 G" c
+ |) k6 ~8 \! H! j1 }8 V$ J一、PHP生成QR CODE
+ J |6 U# K0 P- D; _; @官网:http://phpqrcode.sourceforge.net/
) P& `, c% t1 \ ~, B2 t" m+ j7 y. Y0 }8 R( D9 t8 U
下载源码:https://github.com/endroid/qr-code
0 l4 L4 E6 z6 x& ]3 B; c
% X0 R( r3 {3 j/ [: N+ z% c# ?2 @& E目录结构9 R3 S( \6 _6 j* b: M6 p1 [3 [
" z( {# _* Y- m2 f Q$ X; H% i9 a, X# h" v @
1、qrcode_create.php- B4 n) l* b: C( B5 c( i0 d
ps:生成普通二维码, i5 P \) Z5 {+ u
- ! I2 i1 U, H% t: E- O9 {
- include_once "./qrcode/phpqrcode.php";/**: D* Q- P3 H9 @" `' D; U8 a3 J" _. D$ P
- ' j6 h8 L% a% `) [, o4 P. e/ i
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
5 G1 S! Z4 z; h# f8 \8 ` n0 M - / k# c$ ^) U: e) N/ q" G6 l9 s
- * 在浏览器上直接生成一个二维码(内容为abc)9 ^/ v' {3 ~2 H: j# e1 C
8 l p& K4 T1 c ?" X1 T, c- q9 @- */QRcode::png("abc");: i7 O/ {# W. [
- 1 C+ `) ]8 B$ }' y4 _8 O
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**/ D3 F2 q7 i3 H+ ^3 r- N& o' }
- 1 C4 t9 F$ g. v+ l! G
- * 生成文件到本地; W8 }% c8 V# ?4 |5 i. V }
- & l3 e/ [9 c$ S3 Z7 G( N. L
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)/ Q9 c8 H: v, X
- R& V x$ C% Q& k. k
- * PS:$saveandprint源码的p6参数做了修改
: C; f+ d" y2 ~; q# }6 k - 1 [8 V F: P8 i7 r5 q0 d# E1 J
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);$ X3 e# v' G1 Z
- * }$ ~. X _3 R
- " u- c( V+ @. [5 Z& C+ c- \
复制代码
- R" J+ @% [8 j6 L8 i' t2、qrcode_logo.php
k$ u9 O; w/ D# M3 ]ps:生成带Logo的二维码
2 |% o8 l8 ?! o* `# r% ^8 ]- /**) q1 c& m' r+ @0 l- B1 H
5 {! i4 m% \# j- * Created by PhpStorm.& J' H1 V+ I( h. ^6 L. T1 a1 Y2 p* G
$ @ E9 {& L" S# v1 D/ S+ G w- * User: user( G* B# d0 v4 d! l- i
2 ]6 Z' K7 q' r( O0 W6 r8 B- * Date: 2018/8/16: Q$ y8 ]0 `* q3 C: R
" d) \& p# L* o$ l3 @' J, p! F/ R( u- * Time: 10:431 S7 U) A4 S& X1 ?5 X( t$ x3 p0 v: W
- + F5 H; E+ N8 H$ F
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";
* Q& R6 a i- i3 `1 Z# D - 6 B, Y5 r6 G9 `) x, o% Y8 F9 r
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称$ r5 E9 a2 s0 w, Q j( e+ F
- $ c7 |0 O1 F* K( h. F
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是/ o6 ~/ T, e3 \/ I
+ M3 x3 W( m( e8 B z- $margin = 2;//边距
# _- k5 X& P! _4 |, J& B$ i - # L1 B9 k r' h5 ^& p$ V; O
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片( R! j" z) ]. Z. j; U& h3 \- ~2 J
- 8 C+ ]' y9 C* L+ Y+ W
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
2 @( a9 [3 d; v, q# r- n - 4 a5 V) G6 ~" f) ]0 t9 h: p3 r
- $QR = $picPathAndName; //已经生成的原始二维码图) B3 ?( p! w; ~7 R' K
& G2 V; V$ V0 B" J' ]' Q9 L- $Logo = './pic/logo.png';
$ m* S, ]+ e5 \/ J$ r' B/ Y - " d* b. V5 k4 U7 w
- $Logo_re = './pic/test_logo.png'; 4 z' m! T( X4 b9 Q
6 p! g" B$ [2 b- k) N! ]- $QR = imagecreatefromstring(file_get_contents($QR));
) R; `( G# V1 w& X- ` - 0 M5 t2 }( | }3 n& H" v4 P) k
- $Logo = imagecreatefromstring(file_get_contents($Logo)); ! h* a4 X% Y* q/ y' L
$ G: g- x8 s- v' T. {7 n- $QR_width = imagesx($QR); //二维码图片宽度
4 d7 u) Z |$ r7 l2 ] - & o( `% k* q' C" k! B
- $QR_height = imagesy($QR); //二维码图片高度
# \) U4 T: Y1 w
. K+ }0 W1 B6 M- $logo_width = imagesx($Logo); //logo图片宽度
0 T- w; \) S# } B
+ D) S5 ]* {, @% @* G) ]# x6 m- $logo_height = imagesy($Logo); //logo图片高度, b4 Z' a& n; O2 x2 J
0 u) G! R5 B5 @9 F( y* u- $logo_qr_width = $QR_width / 5;
|# t" J" c0 \! C% h( A( [ - ; A/ m, V) L6 B2 t+ B
- $scale = $logo_width / $logo_qr_width;
) K: r3 y* S$ U% c( H0 r
: c* P- u- s, w3 [% c* W. r- $logo_qr_height = $logo_height / $scale;
0 A! P' L4 `3 m: B
3 q9 [8 X+ u6 v% `; F% B" }- $from_width = ($QR_width - $logo_qr_width) / 2;: E2 {9 j" M( R# i2 G% V1 a& |
2 H6 q- x' ]# B" z* r- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
9 R# k. J! Z }% B - 0 c8 g q: \ x1 G; y
- //输出图片
& \8 }& m' a5 m: ~/ _
: `7 ], c. p% ?+ s# h- imagepng($QR, $Logo_re);% K6 z' S$ O9 u
- $ y7 s) `3 c, n/ Y! M) Z `# ?5 p
- }" V9 n; d6 v2 d# Y& G5 c
& M: M2 G) x. p1 a* v* b, o
* K# Z4 {1 `7 x j
复制代码 3、qrcode_vcard.php (生成电子签名)
" z0 n/ `; H. u- E+ C
0 l9 d% p" \& P% k/ E. _7 YvCard格式:https://zh.wikipedia.org/wiki/VCard# @: ^( Y0 Z- [% ]% t4 r
, W; ^, j% V( J+ O- 3 \( o" [! ?" P6 A# x
- * Created by PhpStorm.
R4 a- m. u* H. F0 R
4 ]0 ~9 F/ h' E" K) O- * User: user- Y4 u' V3 m$ p
- 7 T5 e. ]" ?8 h6 j% H
- * Date: 2018/8/15
0 ?0 `# @4 i8 [ - 3 {$ C& }) D- V4 V
- * Time: 23:00
; I( U+ V( H {8 j& J) G - ' O+ ^( z9 T- e- z- w8 j
- */require_once "./qrcode/phpqrcode.php";/**+ ~2 e _. {* k6 } w& d4 S
% }& z; ~- D3 O7 T- * 生成电子签名2 u! a* B- a$ G2 G4 U
- - R+ d8 h" I* Y5 s n/ B
- * PS;使用微信扫描二维码
' j" l# O3 a5 i2 ?
: X7 n* z( x' Q" b8 b X3 M, E- */$content = 'BEGIN:VCARD' . "\n";//起始标志
* }3 q/ B& t- d" @/ A
' H5 V) u2 D) l. V( S6 G, {- $content .= 'VERSION:2.1' . "\n";//当前版本3 M; X" q: s1 D8 L
" c* C5 T0 o+ f& M+ y- c+ j( S- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
0 o& A, z7 u- A; U* b2 L - 6 R- o1 x+ `. i* a$ j, s# h
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称9 {/ X3 B) |0 K2 E' L% n; Q
- 9 ^% H, f! p# y2 V
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位2 R* {5 m' }+ \9 R# P( B! F
- 9 T$ j/ Q7 ]2 e' `- s" @
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话% U* O! [: U# i; s9 r
: d3 l7 g, V+ g* J- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
- Y4 ]: E% C0 a+ W - ' L5 a" |+ F/ Z8 P) N
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
5 W$ N) w0 u4 O8 D, p' T/ C - ! r. P8 d+ U7 r+ Q A6 c
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
0 q9 N8 C1 W* G3 [9 G2 D' g1 @$ l - # Z% U5 e% `) r3 x
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱$ o e P( i) X, ], c4 [
- 5 P' d; `) c) k- o! l% J2 \6 P
- $content .= 'URL:www.baidu.com' . "\n";//个人主页
. |# u% Z7 q1 V
+ {2 N7 W% Q& u4 c- $content .= 'END:VCARD' . "\n";//结束标志
" U$ J! G; c- r( \: c# v" x. h2 J
; g( j9 g7 ^1 l" e- QRcode::png($content);
- T! W& x! p& A8 N0 [7 X - - P" k5 Z8 s' q7 @% N. n; n
- 9 I! E& r- D; z7 f' m
复制代码
; j3 O" E1 V- V& u& v) c% C- r相关文章推荐:4 R/ k$ Y& ^9 [9 E* R$ H- Y
1.PHP生成微信二维码实例
: _9 a' p! X; S% T2.php网址转换生成二维码- z' B: J1 `" }( L( ~5 p
相关视频推荐:- L& [: g% V @* h* e8 T
1.独孤九贱(4)_PHP视频教程, j- o( ^/ z$ P( i/ P% m* E
二、JQUERY生成QR CODE
1 C- {# Z( p' f1 k% ^; U! w源码地址:https://github.com/jeromeetienne/jquery-qrcode" k) k0 A+ \( O6 M- {# R- g7 S
6 U+ i1 f0 Q2 d5 x- C$ F/ H: N# `jquery_create.php
3 w, c1 L9 i( y, k @) T8 B0 T* G* E: M2 i8 p' Y4 R3 G
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
4 ^2 I* v# t1 ^4 E w3 D三、PHP识别二维码
1 S$ W% `- i$ H L! I: {1、方法一
X! a4 G' K* R0 F) x* k$ T环境需求,安装如下扩展; F: |1 S* o0 {! |- v
- ImageMagick
8 k5 J! t% k4 P, O+ a! X- zbar% l# C' e* g% _& Y
- php-zbarcode( L6 h+ t4 s r1 t( d) R9 m
2 R; I: ^1 v9 t% q2、方法二* K5 N3 c, T8 F$ [! N
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
- A: d* ]8 ?% g+ R: K' zqrReader类:https://github.com/baagee/php_QrReader
3 ?# l' H, p/ _3 O( b8 C/ M' L) I! J: L0 S4 K, I
- ; G3 l, \7 r) U# P
- $qrcode = new QrReader('./test_logo.png'); //图片路径
$ \* W% |( ^ W: f3 x, h
5 Y1 P) R U8 D* [" k- $text = $qrcode->text(); //返回识别后的文本, @' w! W0 ]' V5 R
, y: I9 A- v+ W! p! J% j1 e/ h4 i- echo $text;( u* ~' V. L; j- d$ i; ]4 m
- % ?9 ?: c- l( R8 V) R1 D
- 0 w( b8 M! L% V* R5 J5 h9 e; h
复制代码
; q% O. n8 r& N链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
9 e* Q: p, Y5 q6 [) {+ I
: F3 S9 E, J X, v9 n* _ D; m7 [# k# |& E
" o# c8 E! C+ J( c$ k; S7 a0 ?5 [5 S5 Z
6 C; f) m& `" s% n; J( f# Y# Y8 J& e. c. e
/ \% ~: H: Q$ U7 h0 p4 a
3 R7 ?( i! d( ?1 G8 v2 K% s
; Q' w/ g+ p w; L5 K2 B3 j2 K' R- L' X7 S9 e5 ^
|