管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
5 z8 b9 E9 N, Q9 U! a7 c9 H+ I" \4 n- X---------------------------------------------------------------------------------------------------7 s* H5 g* x$ x# Q/ J" t
二维码的分类6 O6 z: B3 Z, ^2 F% ]( V7 ]
线性堆叠式二维码
& ~9 W0 {! ~ J l$ i; h A' T' L# V% m' S& `) r
矩阵式二维码
2 y$ p7 i% }* H: s h
G# T: h( E; V& P7 g$ `$ W二维码的优缺点0 ~1 i8 T2 c. l! E% _6 c. L
优点
6 `5 l$ p( }+ p信息容量大! ?4 f4 c) S% t& u9 k6 D
& ^, E. R# F. w& a2 [, ~+ d
编码范围广' `. z) p/ S: a# N9 p- ?- ~
) G' D7 i H6 k8 \7 A容错能力强
2 e2 Z G& m$ R- q- r6 S
+ j" `3 n8 T" t- Y/ V译码可靠性高
+ A, G1 ]7 k2 T! A( A1 Q+ T8 U: N4 i, ~' [9 \$ Y7 w
可引入加密措施2 m; V0 Q4 D, H, l% Y
# W0 t; J( @1 [5 ~3 A
成本低,易制作8 t+ W( N2 Y8 R8 S7 I
- I; ^: i Y1 S
缺点
' H6 i& s* D' }/ C二维码技术成为手机病毒、钓鱼网站传播的新渠道
0 G3 d/ ^2 T9 l: t2 V1 G$ H: @ L
信息泄密
6 t% F/ k# Z( P& c- w/ [% @8 p$ T3 d7 f5 `0 ]8 P
目前流行的三大国际标准
# H5 L# Q4 s" |PDF417:不支持中文- N4 z! l* I8 |8 e
/ r8 ]' y* c/ i, l; Z; m" B
DM:专利未公开,需支付专利费用' z* I- J8 j6 K+ {+ @
5 i) P0 @) y: L3 i8 h8 H
QR CODE:专利公开,支持中文
% a5 K; Y e$ J: P$ |
( C& @! k4 O6 WQR CODE 纠错能力
9 }4 `! B5 p/ s G; lL级:约可纠错7%的数据码字
1 \2 M3 V+ g1 ]8 E/ Z
' v3 v# x" y7 S6 O/ v7 A$ l2 E2 o1 VM级:约可纠错15%的数据码字
8 ?& i5 ?7 m! B9 U) ]- K0 k. k7 C! ~2 G/ Q2 Y) }$ I$ ?: v
Q级:约可纠错25%的数据码字" |6 c/ c- W+ z- d" B: K7 w$ v
# w: N( [$ H- i2 `9 n5 |3 qH级:约可纠错30%的数据码字; A. ?8 B, O, O& {0 G3 x1 V
+ c4 ^$ j8 ?" @: L; S前提条件4 c$ ]! I0 q, n2 ?4 P* ^
GD库# ^( J6 d" ]& k& l: Z1 m, K' U, }
* J5 y% A0 u7 Q4 |一、PHP生成QR CODE
( g, ?' N4 T! i7 K3 D官网:http://phpqrcode.sourceforge.net/
& P& G& k% `2 ]5 c! r( K- o2 Q0 V; i. y* }# n2 @
下载源码:https://github.com/endroid/qr-code! X Z7 B6 h& t- ^. o# X
* R- w2 E3 A1 S) j
目录结构
, r* {6 O0 E7 M. i [7 ~7 q9 l
9 r/ j# g1 f" a2 ~ N1 {2 K
5 y% `- P7 |. `9 f# Q' t: @( _) j3 @1、qrcode_create.php1 j5 |$ {& l5 s6 D
ps:生成普通二维码
, D) Y2 g6 q2 }) C& u. f
9 A2 _& f7 b X' I" [- include_once "./qrcode/phpqrcode.php";/**
! x8 L5 @8 {" Q4 t' x - + G5 r% F+ E. j3 S5 h( a& R1 R: M
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径6 u' k+ C9 b5 a% c% f" t Y6 [# A
- 3 {0 e3 g" R5 |9 p7 m7 r% n
- * 在浏览器上直接生成一个二维码(内容为abc)6 {0 O Y. y! D3 L9 W( S: G( V
- : ^* p; Q" x J
- */QRcode::png("abc");
4 I7 \% Q! j$ G1 s- f - - ~: r( z3 [, c- P5 o: L( }
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
% u: C3 R3 Q" x% j3 | - 9 p5 K+ s2 p7 y
- * 生成文件到本地
) n, Z% l8 u8 U, l( z8 q6 ^ - ' k/ [4 J. C/ P* s( h- k
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
: u J* K$ s5 S# w( V6 } - , s+ C) o& f8 c/ e4 b8 G
- * PS:$saveandprint源码的p6参数做了修改. M: l6 y* p. ~6 o
- 2 U9 n* p' e8 R, e
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
4 c2 z% A S( I' P
3 y9 e, u" z/ j: m2 `
; a$ p1 y7 E- e5 u2 ^& I
复制代码 ' i" ^' O. n5 I# C/ Z! C
2、qrcode_logo.php
7 n8 h$ _7 P# B( P, x5 Sps:生成带Logo的二维码
4 R! z) j9 \! t: v" v- /**
# M' v2 t9 l5 `, L% P7 `5 x( N - : [( T- e. e. g
- * Created by PhpStorm./ c2 M3 o+ h! E" _% F# M1 _, @' S
- ) x& i: m Q' Z5 C
- * User: user
, _# z* ^4 s/ `, \+ [8 i) X
( b7 ~/ |8 V7 u( z, | \- * Date: 2018/8/16
5 t: H( g4 ?2 p! d/ X/ O
" |6 m c) c6 H4 C- * Time: 10:43
$ Y% M a5 B) M
& @/ \( W0 O( n" S- */include "./qrcode/phpqrcode.php";$txt = "测试内容";. x7 S: l: h! T/ P
]& V% i3 Z7 g8 P- ^* x; e: n- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
4 w- [8 k7 d! V2 K& n - ( d" y! ?, E1 o, X* d/ L
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是- Y: G6 ~( P: H3 b6 d
- . A2 Y. R8 Z8 k6 f" @+ ]
- $margin = 2;//边距) M4 Q$ C1 S4 J; U/ V: k
- " Y# I/ h$ f8 y# q" @, i U
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片8 Y" U/ I# I7 `" k5 i7 q
- 5 T7 [9 f* X }. V- F
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
: s7 D2 |& l) y) n
8 T |3 j5 a! v6 i8 ?2 A- $QR = $picPathAndName; //已经生成的原始二维码图5 J+ j6 n9 U3 u3 ^+ a( \( t G
0 j) |) a3 ^: X d- $Logo = './pic/logo.png'; , C& Y% c j& q8 }3 n: I1 F
1 F1 b* Q. e( Q9 d! E- $Logo_re = './pic/test_logo.png'; . _2 n5 c. ?' N9 @
5 q8 A7 w$ M* |' m8 t- $QR = imagecreatefromstring(file_get_contents($QR)); ! N$ n' V9 d, U5 T; y z# ~6 u
- 3 D3 f! p( @$ G
- $Logo = imagecreatefromstring(file_get_contents($Logo));
h6 e& R* ?, r4 o+ Z! c - / @6 s' O- H" C, ~$ T1 M" c
- $QR_width = imagesx($QR); //二维码图片宽度6 S: i! B" r M# x
- 5 x0 a4 h M" @# x) D
- $QR_height = imagesy($QR); //二维码图片高度/ `+ n7 ], c9 l* P D1 Q |* D- Y
- ( W5 }! z6 A' X4 D
- $logo_width = imagesx($Logo); //logo图片宽度
1 W8 {& U1 n; M& J - - N% r; S5 j9 M+ }% A: Z: i
- $logo_height = imagesy($Logo); //logo图片高度
: F: x& [) {8 R0 P# ] - 8 n R5 }7 Q; U8 g
- $logo_qr_width = $QR_width / 5; # e) v& \# @# y, |: a
- 5 Y1 d! O$ H$ X6 v, G9 [! }
- $scale = $logo_width / $logo_qr_width;
; _4 P( a8 }, ~
) J @, G! f0 N b0 K' x0 j7 t; ^* W+ v- $logo_qr_height = $logo_height / $scale;
`' J" R6 E% ]% k3 Q
# V2 _0 }! z4 T( c" H4 v1 E. M. l- $from_width = ($QR_width - $logo_qr_width) / 2;
6 S' o) p5 e) h- V& H/ L' p# \4 u$ L - * J8 j6 \: y1 v; d
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
# I! P0 V* h: b. |1 i" h
" l% t" Y, ?4 H3 J z+ E- //输出图片' Q* ?3 x0 H5 x7 V# x6 A
3 e* [ U/ A: i; q2 L+ [8 M8 f* P- imagepng($QR, $Logo_re);
# Z0 y6 R7 O, w; C& _; t7 \0 l& q
2 Y$ z& b0 ?: s& \ t- }/ i) {/ O) Y) W; e# ]! P/ y# D
- 7 G/ L6 t' G. J( [
- 3 Y- r9 ]* p7 k: U5 S; ~/ }: d$ t
复制代码 3、qrcode_vcard.php (生成电子签名)
2 G; x/ H! x& g8 W X! e% j3 e! T: j: U' |9 d9 _
vCard格式:https://zh.wikipedia.org/wiki/VCard
& y/ J' R" a; b! ^" }- \. s
E. q, O* k5 p6 k; M2 W. O+ T5 O1 f
7 G$ ^ A1 }- I1 N; x- * Created by PhpStorm.
v( O1 B0 n+ e- {# w - & w7 F p7 |& Q3 v
- * User: user7 n* k. H9 C# U$ f* T
- ( P8 L1 Q2 Z' [" m% N: z. a9 J$ s! S
- * Date: 2018/8/15) F, P3 K) }/ g* n A
) o+ O* `$ b; _/ ~$ ]1 ]- * Time: 23:00
$ _2 t' h6 D8 p' L: j0 @
: p) X, v9 W* v2 v6 B- */require_once "./qrcode/phpqrcode.php";/**5 ^$ w- ~1 ], g; X2 h
- Q9 |( a# r1 w0 m- [8 O8 |3 a
- * 生成电子签名
" ?% B. N3 d3 s - 8 q$ v) W8 J) h# n" I
- * PS;使用微信扫描二维码, N! z9 t5 O. \8 Z- G- E! V
Z) w8 x8 T( v& K a M7 \. f- */$content = 'BEGIN:VCARD' . "\n";//起始标志
/ d5 G" S$ f. U7 T i1 C0 ?; b
1 S0 v* I/ {* z9 J- $content .= 'VERSION:2.1' . "\n";//当前版本5 \4 o. ]# @! J/ Z2 u" R' I( K: d# ?
/ |# f0 d- R2 x7 N/ Z- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名+ M9 \3 X. u2 \$ q
' V8 { N: ]# k9 g1 g- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称; \1 h9 a C9 @# f6 q3 Y
- 8 C, n+ P1 P* S; Z$ P$ ~ ^2 d6 n
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位. @8 _( O4 K7 H8 H* }9 A
- P4 m, M7 ` G5 p/ T
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
0 p) @9 v. E$ E; H9 n
3 B1 r$ m7 i" [) V- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址, ^7 W' P+ S' Q) `2 @) r+ Q* e
- S w* U; J8 E7 f0 C' b' t- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
! A, i* R+ z* F( B j' n6 V - 7 j- ?; |6 s7 B% O( z) C
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
5 H- O6 p7 q* h# }, p# Q
# F: ]5 v6 k/ r7 n/ y- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
4 M" M0 X5 {( e' A
1 e2 @1 w6 z) @ j5 X2 F- $content .= 'URL:www.baidu.com' . "\n";//个人主页$ w# U- A, {) r; |" q( R: v0 _1 o
' B6 z" }& G _0 a' h9 f1 l0 {- $content .= 'END:VCARD' . "\n";//结束标志$ v y8 j1 a# j& j
7 l( p" ?* b: s* ~- QRcode::png($content);
8 f; d6 ^$ s1 m; y+ g - ! T: O6 F6 E n) ?. m
+ A1 k: {7 k7 ~; L _ W% r
复制代码
9 s2 R2 x4 n# w0 h" b相关文章推荐:$ W$ T( R" T& ^7 r- J
1.PHP生成微信二维码实例9 W. J9 i+ n# d% T8 e3 X- ^
2.php网址转换生成二维码, D$ H4 k0 Y; K9 P
相关视频推荐: d* L5 b' j& v( ~* c
1.独孤九贱(4)_PHP视频教程
* K3 O6 A, p- C5 L9 q二、JQUERY生成QR CODE, L( H/ N2 `# Z% }, h- ^$ h0 y
源码地址:https://github.com/jeromeetienne/jquery-qrcode
& w- c! L$ P$ S/ C8 F
& `+ L" K& U9 N1 M) `jquery_create.php; G! |. ?5 }/ T! D
- U1 |4 X2 \6 C8 i; }7 Q
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 5 [# P0 q* B: I* J
三、PHP识别二维码
4 g1 ^, Q/ M' B+ o5 P( ?1、方法一
8 V4 M4 g' ~* {/ x环境需求,安装如下扩展
! {$ p4 T2 p8 I( o8 K- p$ |- ImageMagick
- n# C1 e) b5 x7 x9 {- zbar* ~' S) A% \3 m0 _7 J
- php-zbarcode4 n8 i ?, m0 k& S" ?6 a
' W' I0 n! R- r! m. z2、方法二) G0 N7 F8 V% K! k9 [
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
( `: I$ D5 U/ P0 d4 dqrReader类:https://github.com/baagee/php_QrReader# h) k5 G- N) }5 p
: k& ~$ Q1 u' y' Q0 N c" d
: H1 e; s, w! G# {- $qrcode = new QrReader('./test_logo.png'); //图片路径
T9 Y+ A& k! g$ }2 X! B) M, L( s | - ( w1 v3 D/ |/ K1 T7 g
- $text = $qrcode->text(); //返回识别后的文本# F1 H, _* b5 A7 g$ I
1 U: ?* M4 ]8 k$ [& G: u- echo $text;) I( o4 s6 N8 V( e6 B
- 7 c5 N) Y6 ^, ]: z! C5 A/ ?# }
- * \3 @! G$ G/ z# Y+ l
复制代码
6 `( `( s! s& `# @3 U0 _1 `& u2 W链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7- F+ w9 v$ ~; y( y7 u1 ?$ ^
& d0 b8 _( z' v& b# W8 {3 {1 K Q3 x' h# |+ O. \- A9 i; \1 m
n+ O! w' u2 b# k* ?7 @
! w8 B% d/ ?* m3 y
9 Z) H- g3 A @2 g9 ?6 T5 ~ c- B) y; f7 o
; A$ X5 g, Q) |- ~# J
$ c+ V1 _3 F* U5 f
& v% a) B# g+ {. _" b
|
|