管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
1 o" g- O' v/ _2 O; L& c--------------------------------------------------------------------------------------------------- }( ~2 Q/ A0 c2 l0 ]
二维码的分类8 O F; I9 q+ e
线性堆叠式二维码' _+ V: P( A/ V; l9 I9 P
# v# m; k% q' _" D5 v7 o0 c
矩阵式二维码
* p& G2 t( `; c3 n2 q
3 E* H* {! H7 `# G* ^# e7 n9 Y二维码的优缺点& Q1 y5 H- e [: B
优点) q9 k S3 `! j/ u
信息容量大 U; Z/ ?( Y* \& P/ M& ]
8 B1 d1 C5 E/ z
编码范围广& k5 c" u5 M/ J6 i9 g. g
. k+ b& W( g6 F; ~+ `1 D
容错能力强2 ]3 u0 a( z0 K0 \: y/ Z
" I3 N6 {! t2 D) v8 ]
译码可靠性高2 M2 I5 D- x, l: o3 k
, X+ C; ]' K. O2 F8 }6 p可引入加密措施+ |3 k6 ^! i2 O
; i! M) N v, m8 B2 c
成本低,易制作5 E6 l6 K% u$ V3 Y8 `
/ D2 \0 {; ]% A# Y缺点
7 J! Z7 F2 s( n# j( w二维码技术成为手机病毒、钓鱼网站传播的新渠道
! G" Y- M1 ], t, ?# F
( q6 w7 Y" `$ g3 H3 h' _信息泄密6 r8 V: v4 N( o' ^
3 c I6 n; S# i
目前流行的三大国际标准9 X4 `! X8 r; _" c3 G4 h# E
PDF417:不支持中文4 c7 [8 @1 D+ w4 z: E/ F
5 _) E) ~; y$ g+ M$ R
DM:专利未公开,需支付专利费用' T) |+ ^* P2 W
6 i% e8 j9 w6 B% HQR CODE:专利公开,支持中文 V6 O8 T$ m/ l( I0 P. W$ d6 j
$ m: u8 y4 Z6 R. l; i2 V, F
QR CODE 纠错能力8 A) n2 G$ Z, h) h- x" _
L级:约可纠错7%的数据码字5 i! k$ }" d& v' f, Q, d1 w
4 f) Z) D1 S: v
M级:约可纠错15%的数据码字
" [( @) N e4 l/ D m
& g* u2 Z8 s3 ?- S" z$ ~& J7 oQ级:约可纠错25%的数据码字* @' J7 J7 N% e- |. h5 a/ p
3 u) _; L: o$ y: O5 o: j
H级:约可纠错30%的数据码字0 c+ U* _: M6 k
* q1 E2 n, _9 W1 \8 ^
前提条件
' |" v4 E% k5 q( R1 ^! QGD库
" @! I6 b4 x! k+ ^) v
3 w9 ?3 ?" N2 f2 K一、PHP生成QR CODE
5 M/ m9 C/ G1 w% z2 }& k% e官网:http://phpqrcode.sourceforge.net/; D3 e. f% ~8 b, |6 V+ E
' T/ z+ e L% I% T
下载源码:https://github.com/endroid/qr-code2 [5 _9 p6 I$ |: X8 o
8 I2 K+ h/ o+ U5 O目录结构9 u) R( G+ U2 H
9 m& @ }8 H3 l/ L5 K( T! W' p
5 i4 y( x9 u7 ^& G" v1、qrcode_create.php; d) y( F- U( W
ps:生成普通二维码
V, w4 B1 s! z# v. Z# q& k: |
7 L8 x( m9 D6 l) @8 J- include_once "./qrcode/phpqrcode.php";/**
* N+ s! ]0 a, m$ E% B7 e4 ^& N - & G* h5 G [% K
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
6 Z m3 Z9 e% ?# |5 W% f* g
* l& z2 o# m4 ]* h$ G n4 I- * 在浏览器上直接生成一个二维码(内容为abc)4 ~3 o* T I6 T3 z! R# B, F/ D
- Q) R9 ]0 [+ D% W
- */QRcode::png("abc");
. S+ |# C! J. h# L( _, ~ - ' `% n. Y5 t% w
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
3 {+ p3 t1 y) R- G+ M4 q, _
) c9 i, m% y: G E) V- * 生成文件到本地
, ^! c9 d6 c; t. @7 Z4 Y4 j2 \) c' E
8 X$ d' m* n$ D" y: ^! L- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
. N" v6 B& U2 o - `+ T" E/ O" w% O$ p" l
- * PS:$saveandprint源码的p6参数做了修改! r3 ?% w: b; y' \+ G) |- A
- ( R' S5 {6 @% P- X; x
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);1 O& |# A) W. y- l6 u
5 k( D* _/ R) ~7 u o1 D. i8 e* Q2 B
4 l2 d+ _7 w& {, C
复制代码 % ^3 q# n6 N3 ~+ i8 c' m
2、qrcode_logo.php' y$ ?! [* K. s3 O& K
ps:生成带Logo的二维码
( m8 K5 i, L6 E% k0 c* }- /**, J" `3 D i" W' x) ^* r9 i
- 4 Z6 B: D7 R, @- Q' p, t
- * Created by PhpStorm.+ x- \- B6 f5 w6 z3 I
- m" l; d3 q0 o$ c- D3 U, @
- * User: user
. c" H6 A/ B9 i+ D - 1 z" [, D3 T* H! z) l3 i. Z$ A
- * Date: 2018/8/16
* V# u+ {+ r, G, [: t$ @
0 X; }% u0 Z! c" L6 |: c# o! B- * Time: 10:43
4 s2 [: k% D: p6 N
4 V/ Y8 Y- S. V/ D, }/ G- */include "./qrcode/phpqrcode.php";$txt = "测试内容";( B% @9 ]$ k& s0 A3 l
/ |) l6 ^- g5 C X& ~/ \! L- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称5 f$ d3 N }6 c- K. [, I2 @$ J# o
- 1 U; i' g9 C# p0 l+ v
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是- i8 n* F# o3 C0 `
% w) F% V8 o) T! E' o" f- $margin = 2;//边距
4 t7 \: ?( P3 |9 _! I8 N1 @' ^! e
1 T: t1 h d5 Y2 ]% ~. [7 k- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
2 P, K! j# K- K& v- f- y( r& A2 `6 x - # E; ?8 T4 I) Q. K
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
/ c4 i( G4 i+ z
! V! w: o% J* |" O- $QR = $picPathAndName; //已经生成的原始二维码图
7 m8 _& [ S! d" }& V
0 l& m3 e, e$ i9 v- m- $Logo = './pic/logo.png'; % B+ E' W+ n3 P( W* o
- / {3 |3 d* O# Q
- $Logo_re = './pic/test_logo.png';
4 X& ~/ ^+ a( [: \/ H
( |4 W: `- {* f5 m- $QR = imagecreatefromstring(file_get_contents($QR)); & U* O9 e5 B! F! N- e- f" j
0 T, n3 I* W* s" y: O- $Logo = imagecreatefromstring(file_get_contents($Logo));
. |7 ^6 `. k2 z/ m% @7 }
/ q2 X" [- j: H, R- $QR_width = imagesx($QR); //二维码图片宽度
: z1 q5 r* x- q; A( X8 e& W+ ^
: U+ Z9 {! f3 @% e- $QR_height = imagesy($QR); //二维码图片高度) I5 D& E. D5 F) m, f9 z
- 9 Z [. ~# D& m; t% L. i3 p) K
- $logo_width = imagesx($Logo); //logo图片宽度
6 s( `" [: D6 F$ A
0 {, Q% f9 C3 f1 N; B, h, v% v k- $logo_height = imagesy($Logo); //logo图片高度0 u* I/ E/ Q( } i/ B
; d! o, G, f8 \( o5 d2 k9 `- $logo_qr_width = $QR_width / 5; 0 b5 _5 o7 f q( f" J) H
8 z, p6 b! e X3 s- $scale = $logo_width / $logo_qr_width; 5 T! z. f0 U! c! G; N }+ I
1 J& f N, U4 C, R% g& g9 ]- $logo_qr_height = $logo_height / $scale;
$ H" {" w3 _% t2 N - 0 H# r& f O! d' J' x$ a# | D9 f
- $from_width = ($QR_width - $logo_qr_width) / 2;
. d' ^/ ~: i7 v6 c2 z9 g$ ~, X6 w - , @) f" c& q! i; Z8 R/ w/ R* M f
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); & u6 L: A$ c7 H
- " x4 I& ~5 N! ]8 |, V! _) M' F
- //输出图片
7 _) p0 K; h' }" b' X% u
; x- _1 v" c6 ~9 g- K! D) N7 r4 ]; S- imagepng($QR, $Logo_re);, @$ K P, T# Z$ ~$ E/ d. }
- / l0 p, S) |, k
- }
& b0 k# r9 C w8 T
1 o0 w& h2 N' x4 c4 T. D& e9 m8 a- + s; |9 g2 ]2 W* \5 T c6 j( P2 q
复制代码 3、qrcode_vcard.php (生成电子签名)
a( p) z/ a! D
0 g2 w- F* T2 e% R0 E, _" I2 ovCard格式:https://zh.wikipedia.org/wiki/VCard
( u$ h4 Y1 b4 s4 l- j- V+ L7 n" a8 F ^
# ~+ F$ E- r& k) B7 @- * Created by PhpStorm.& ^( l: D7 e4 A
- 9 c5 B- W# s0 b8 u4 j0 O- ?$ `& B
- * User: user5 x1 M1 R8 e% p) W. X: ^+ M4 d
) L6 }. K; ~' \8 ]( d- * Date: 2018/8/15- f; H |+ x1 |" w3 J7 K- ~8 g
" A, W; W5 N1 t z2 T- * Time: 23:00, X/ w. C- L- X8 M+ x3 Q* a6 d" p8 p
8 u$ U( X7 @" g: ~4 V/ x2 z- */require_once "./qrcode/phpqrcode.php";/**# P# t9 Q3 J& y8 U, ]
* C, I- Y: ? ~6 i4 P- * 生成电子签名
/ \, O" J$ D9 K- i( i
" Y( X& t, L- l- * PS;使用微信扫描二维码
& k! h; ]/ k, ^0 A* w- Q/ y - 1 Q* w2 ?* N2 n4 d6 y
- */$content = 'BEGIN:VCARD' . "\n";//起始标志
+ e$ w/ |3 s8 }- F
/ n# \% x: ]; _/ O. ?" {; X- $content .= 'VERSION:2.1' . "\n";//当前版本/ y. F% Y3 H' M, R
- & @/ {% o f- f$ \0 K8 n8 j
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
0 E) [7 }0 Q! C7 e. e8 G& a - 7 J( v W5 X3 e: ?' Q: N, |
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称+ S# _% S7 e. t6 Y
" A$ Z6 w# G K3 U3 Q9 D6 s: H8 g- $content .= 'TITLE:PHP研发程序员' . "\n";//职位0 ]; F2 Y3 f$ R% q. Y# V
: x K% t8 E6 e- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话3 u2 t5 @8 c' ~: V$ x7 H2 p; Y, j
- $ r6 O3 g; N2 k m
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
: w0 [/ |8 k& R! G - 6 I) D1 B( y7 t& t8 o
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
; W/ f1 X$ P, d1 L1 Q& u - 7 m# D. ?1 d9 ?
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话" S+ ?9 N8 u7 S) b- [
* N# F/ B$ |- f- T& q- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
+ l- {0 W3 d+ G
! p' [6 o& z) O2 i. ]- $content .= 'URL:www.baidu.com' . "\n";//个人主页
7 {! j# K) S5 Z4 y2 v) H
# ]: [( i1 P% w7 u8 y- $content .= 'END:VCARD' . "\n";//结束标志
2 ?" O N" ~' s( N* J; o$ o2 L - ) O& ~# D* h0 L3 k
- QRcode::png($content);
- w+ {, _: m2 b8 w+ M
: r$ H1 l2 n- n0 u2 x2 H/ } [, \0 d p- 4 U1 K7 H: ]; }3 S
复制代码 7 m3 N$ v. Z/ r0 f+ f
相关文章推荐:" O& {% |# H+ z. J
1.PHP生成微信二维码实例4 P. p$ v- g: ?0 ]* `3 F0 X
2.php网址转换生成二维码4 X/ X1 Z( j' V" ?
相关视频推荐:
" r5 e, ~/ T0 y( Z- Q1.独孤九贱(4)_PHP视频教程
' {9 L5 l2 d2 B/ b二、JQUERY生成QR CODE
! F3 L( A, ]% k& f' U7 B" b源码地址:https://github.com/jeromeetienne/jquery-qrcode
5 Z) V+ P. O7 v+ H% Y6 L, U( }9 O5 S, y2 y
+ l4 z) L1 F& g9 f% ]jquery_create.php
- o8 C/ L0 i" j
! R3 h+ ]( `, R3 w* i- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
) S9 E. {% Z4 M: Q- ?/ K0 I% k三、PHP识别二维码3 H) A. P/ q8 d4 c. f
1、方法一- v' ]( F3 d# C7 J4 K* F1 |
环境需求,安装如下扩展
+ Z$ `# ]) x- V' l- ImageMagick
/ J- i. s: n$ x2 D# N. M! g$ E- zbar
! ?+ }/ d# F/ J K% N- php-zbarcode/ E% x* [; n9 G0 v4 g
2 N! b0 f6 e! g/ o
2、方法二1 C: [6 t" U A2 E' U
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
5 S0 l: |7 d& ?. j& _7 e AqrReader类:https://github.com/baagee/php_QrReader
' g+ p# {- ?. U/ S a0 s8 t9 {% u' k) v
- 6 i! x* ~+ [9 o$ ?- V
- $qrcode = new QrReader('./test_logo.png'); //图片路径
- ~) b. t2 O& r$ f& n# g - / S4 G: D( K( b1 X, G6 K
- $text = $qrcode->text(); //返回识别后的文本
5 c1 u, n; Z4 l
9 _' {3 ?5 x* A* \0 S$ V- echo $text;
$ e+ E. C, C( r% v - 8 H- B5 p% T; e9 S/ [
3 F9 S' g: _# C5 u& R) V* N
复制代码 1 Y6 W5 N* l: k$ _, i/ p0 q5 C
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7: X% U" r6 n# t/ ~% [# e
. [# N! o1 _" d. e4 M
' g+ H2 ~3 j* C7 Q3 k
" |" d8 j: J6 j- ~5 N; @6 f* f9 X6 G: M1 o$ r) I" }) y
$ y3 r; c) u4 }* H% {6 P" d- v
0 g# Y6 @3 Q1 E
- H8 s2 ]& t+ [9 e: e( j) Y; R' [ R2 [( @
2 ?& j$ y( Z: p( K
|
|