管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
/ k0 _# P3 M! A* Y---------------------------------------------------------------------------------------------------7 }7 R3 x$ @- S) _
二维码的分类- K# ^; K: ]+ O" h3 ?' {
线性堆叠式二维码
! o* r3 _8 v# l3 C+ W0 k1 @# q F0 S0 y
矩阵式二维码
+ r5 w5 a+ c- H: l$ p+ r; S0 K0 r9 {2 c
二维码的优缺点
( U, \4 g0 H# N. i3 w; a优点) v1 X1 R0 y% H1 P. e( \- e9 X
信息容量大, j0 \5 I" n ?6 r: Q" d
6 {/ X7 c+ @1 q4 O8 S编码范围广4 S+ n+ a! X6 K+ O( W* }$ Z% f
- S, A9 g& l. v' j0 i
容错能力强 v5 P- X* j6 h9 y: C
. Q" E/ N6 C# |* X3 h
译码可靠性高
9 ?; |$ r* c5 l$ F' m6 _6 _4 Y
$ n: q- j s4 D可引入加密措施
* v" B' Z$ H* o& Q+ p' [
; ?; l2 f9 }% c) v成本低,易制作; K, E4 d1 ~6 W b+ s9 |
* x3 G7 R3 c: M1 e o* K9 g
缺点5 H6 v! M+ n$ V3 b5 C( \
二维码技术成为手机病毒、钓鱼网站传播的新渠道
" U) G- J* K# z) F3 r1 R: b4 y% V+ t) y c" i! d, K H% h
信息泄密
$ A3 ` ?' H0 O
: [/ Y$ ]+ s8 J* a9 @8 O目前流行的三大国际标准
7 O! T# f& s+ v' h2 J& g3 u* a$ |PDF417:不支持中文
( y/ H, ]; K+ G. D
4 |/ [/ ]2 y! v) o" ~DM:专利未公开,需支付专利费用
5 w( y7 O n* G, w, [3 A: S7 T7 d
! D( |/ W) x7 Q ]9 ~2 G5 HQR CODE:专利公开,支持中文
4 c* A: n2 V7 I: u$ y( h/ A; o! i
QR CODE 纠错能力( K; V' I2 G2 I
L级:约可纠错7%的数据码字
, k# ^" U3 t$ U( A
; y7 {; K! Y! k7 jM级:约可纠错15%的数据码字! C, K' M' m% z& ~
( T' x. }- Y; Z. q% h: x ?
Q级:约可纠错25%的数据码字
1 N0 P- n5 `0 {0 S, m: l0 R. a" J8 t* t" _7 o- b
H级:约可纠错30%的数据码字1 d$ ~" h& M2 {
: N6 s1 e+ @$ ~+ T前提条件9 T, N3 G& k! X1 t
GD库' `" V# W5 Z: E% L
& o& P% M( z5 C. V/ K. U一、PHP生成QR CODE: l# c" J: x5 ]& M( ]# ~" B
官网:http://phpqrcode.sourceforge.net/
: `: h/ n: C, Q
3 O) R5 ~# U J9 N# a: Q下载源码:https://github.com/endroid/qr-code8 D1 r* _" n% y
& }7 ?3 y2 l8 R4 y* L0 E K目录结构5 ^, v5 f% p9 P; H# B
6 W" c: q0 k1 ? L. K; f
6 T6 l( @" x) K. R1、qrcode_create.php2 G/ {" r* k& a8 [, O7 h/ r) M. ~
ps:生成普通二维码* N& e# [9 h; L3 ?" X; I4 t
5 x8 Q8 d4 i/ r- include_once "./qrcode/phpqrcode.php";/**
; V) X! ^1 e/ p y8 x/ s/ k/ y" U - + a4 ^ X/ W9 k7 t' \/ {
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径5 r, p9 I8 K3 w" Q5 [
/ s* W3 N+ e' p1 P- * 在浏览器上直接生成一个二维码(内容为abc)
, {( Y( C# N( q _, {
1 \8 i) c% {! S$ j- */QRcode::png("abc");
4 O! P/ l! {: C+ M6 `
+ ~4 ^. @( W, H! N& Q- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**5 |; O4 h t2 D/ y& p
- & y4 [- h( \( h2 d
- * 生成文件到本地
* p0 `: k. O! a7 Z$ B4 }
6 v& ~8 [: ], K- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)7 h6 F! S( Y9 Y
7 I3 I5 H; i. h, a6 @2 i1 }- x' h- * PS:$saveandprint源码的p6参数做了修改
2 i% ], [! Q3 W/ [6 J% H. [ _ - 3 e- q6 P) F- L) `1 Z. Y2 U
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);! o/ c# ?' R# J( ~; r
- " J1 D# e8 P3 j2 i
- 1 f/ }3 n7 q* H$ i
复制代码
N1 u4 K5 ?( L4 K2、qrcode_logo.php) ]: q: z1 J- q$ X1 M8 u
ps:生成带Logo的二维码
- D$ q7 J8 m! ]/ x7 |- /**
" J0 C$ e) O) u8 I. m# j1 h( h& Q - 0 H: h8 o3 O7 t4 F5 d0 A
- * Created by PhpStorm.6 Z0 t4 C. z5 H
- . P$ v9 G; X, ~& \
- * User: user0 s: C7 H4 E2 E0 y; S- q; Z
- ( \$ m% H2 y2 E& s
- * Date: 2018/8/16
' ?5 B* h* x/ L8 j1 O - - C0 G* \. Q- o% P- H
- * Time: 10:43
1 [* y2 v" S4 [
3 x3 B. [+ R4 R4 H4 k |, B, g- */include "./qrcode/phpqrcode.php";$txt = "测试内容";) J0 w; e# `4 S" j8 h, M
; [3 U) R4 o- f8 e( { h: [: A3 Q- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
8 L# [ l* D* m
' V }) m0 H- |/ g- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是+ I0 ~ `7 l! G
( d* h2 B, \9 e8 Y4 Z0 S a- $margin = 2;//边距
. g5 F" m% a+ P, v - 7 K0 V0 ?8 \( m" G- U
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
6 `* Q( X. t& g0 D6 m. y2 y - 7 ?& ?- d5 @1 g* F A" q' t
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ + ?+ K5 C+ Z2 i( ~) k2 q2 s" T
- 5 o" _' n; d& L2 y3 C9 g- v
- $QR = $picPathAndName; //已经生成的原始二维码图
/ d1 I9 ?6 B# |2 `; \, s - , w+ n% J, f& a$ |
- $Logo = './pic/logo.png'; 6 q6 o( O5 \4 |4 A
: p- L; D3 C, H, \- $Logo_re = './pic/test_logo.png';
# B8 G; f9 t& J
' s4 u* L4 W/ [& m- $QR = imagecreatefromstring(file_get_contents($QR)); 3 ^6 r7 j. H7 P7 y1 X! S- u- n/ G5 V% m
5 Q4 p# E9 L4 R/ c) R- $Logo = imagecreatefromstring(file_get_contents($Logo)); & m! S: D1 f1 K' j: c2 _
# X( ]/ X6 F& h6 B- $QR_width = imagesx($QR); //二维码图片宽度' o* `3 r A( h0 s4 l! i/ T
5 Q9 f: Q) [( L3 j- $QR_height = imagesy($QR); //二维码图片高度# T9 d+ Z" D" g2 }3 O
- ) e' y* e4 Z! O; D( T4 n
- $logo_width = imagesx($Logo); //logo图片宽度
0 N3 b# Y' z3 E9 @3 k* `$ T - ! B8 p L' i3 ^& b2 q. B
- $logo_height = imagesy($Logo); //logo图片高度7 E2 t8 {5 Y6 b! W4 H) b3 y4 A9 O
- - @# }' t) s1 D; O- L
- $logo_qr_width = $QR_width / 5; - o, h( N/ s6 R" h5 b# g- C7 [
- 3 n2 L# x5 F" G) Q1 K
- $scale = $logo_width / $logo_qr_width;
6 v% n0 g, `1 k5 J6 { - / @" x1 E% e! m
- $logo_qr_height = $logo_height / $scale; % R, k; r8 ?7 _$ B% g0 x2 N
# g7 v% M4 e( j- $from_width = ($QR_width - $logo_qr_width) / 2;& [# ? l. A' M$ m
- + d9 [, O$ P4 L% ?3 e
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
+ f( @# t* a' t2 U
. I9 m/ V/ r% B5 F6 s: p- //输出图片2 r* D9 U/ W) Z& K1 w- s# T, q* H
4 y! h. A( O; Q* u- imagepng($QR, $Logo_re);$ h* p0 O4 S7 f4 ]/ f. z7 |( Y; Q
5 d5 L( M8 ^! t) W4 e3 k7 U# w- }
# a& `4 D7 Y: A! s X4 ?) d4 d4 L - % g) R F7 H$ w2 x4 o2 Z) |
- 8 f* z( Y9 Y' d8 w& ^: K# v
复制代码 3、qrcode_vcard.php (生成电子签名)
. r- P! ]5 X. G9 {4 O/ s
$ B' y/ A7 V; o4 |vCard格式:https://zh.wikipedia.org/wiki/VCard
* |8 I# J% `+ e. i. z" j; n
9 A+ G' J- Z$ U5 V- 8 j7 ]6 g3 Y4 m, `
- * Created by PhpStorm.
. A3 T- M" l0 l7 d
7 D c/ ~% U! w4 A- k4 P' O- U- * User: user. o' s$ u: @" w0 s. b- \' \
" x' V' F B) v- * Date: 2018/8/15( H( e: \+ ]& z8 G2 k/ K1 X
! J& \* Q1 D! {8 {! i- * Time: 23:004 Z' _* \) ~8 y: K" `! E
3 s, l( C5 I+ b8 ^1 ^ |- */require_once "./qrcode/phpqrcode.php";/**8 l Y- N% q, R% D h' n/ g7 z2 g6 |
- 1 ~* m7 ^! Y2 p
- * 生成电子签名: G; I, o3 {# ]4 k& j5 P$ D! f
; o3 |% D# G0 f; `- * PS;使用微信扫描二维码
$ T1 A1 e) [( a( t/ @+ ?, O. N
% a' \+ |. a0 k) t* z; e- */$content = 'BEGIN:VCARD' . "\n";//起始标志
4 B2 H; k" M% `; T
; d& ~7 S3 ^, v1 m# E* M3 E- $content .= 'VERSION:2.1' . "\n";//当前版本! K3 K/ X- B4 g" O6 O
' c. B3 E; h5 h# `) l( F# p- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
: I: _& K( R3 W; G% ` - - Q6 K4 e. n6 W* G$ P1 u7 H+ ?, {
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
( O" `1 m1 g# W" S
0 I1 i- G/ W8 x5 A" G# h- $content .= 'TITLE:PHP研发程序员' . "\n";//职位 y; F8 A, c# y% o7 B
% J# v7 U+ y: s' n9 c. ?. c! p- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话8 _; t% \& v# @: R9 L
# q" X5 O' ~ }8 _ Z t" w/ B- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址4 J! j. A- q& [
- 1 v& v- Z& F( \" \7 ^
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)6 X+ I% j/ }- m: z# H0 f
! L7 I8 X4 k: K* d# K4 I- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
3 `1 M: t( l$ K [5 c8 e D - + ~8 l! ]. T* k7 V' g) W0 n
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
1 c3 _) O' G& T2 ` o6 u% ~
5 P& Q% F! n; b, `, }2 B7 T- $content .= 'URL:www.baidu.com' . "\n";//个人主页
' z5 M2 l0 m o1 s
$ o5 }7 s( ~, m! S3 Y- $content .= 'END:VCARD' . "\n";//结束标志
. l# H3 I2 B. f1 s6 x; N* k
J3 s7 l, L, I- QRcode::png($content);8 O# H: g2 k' i( n+ Y! o- V
- - x# x/ e7 A7 ~; `; F
- 0 p- K K' |7 i* k, w- x7 E0 r
复制代码 . M+ j. X/ s/ `, e' E7 Q6 l
相关文章推荐:
' [; j. Y* X6 T& ?1 C8 y7 K1.PHP生成微信二维码实例7 D! A& g3 r: R
2.php网址转换生成二维码
' w2 F# U' P' ~9 p( p$ m) m相关视频推荐:
! F& K! A2 w8 b; q1.独孤九贱(4)_PHP视频教程
9 h% s: \3 \6 T二、JQUERY生成QR CODE
4 ~" ~2 z, @# K) J" |; X源码地址:https://github.com/jeromeetienne/jquery-qrcode( ^" ~# j& ?/ j- T
1 k) d- w) w. _jquery_create.php
i, y/ s7 g8 B$ P' Z. O6 ~8 ^' }( H( \; T5 u$ e0 j9 a$ k
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 # y/ Z! o3 v) \$ H4 M
三、PHP识别二维码
/ E1 F$ j* m2 H/ [. {+ l1、方法一2 t2 L: [5 k! v
环境需求,安装如下扩展- v7 F' f, [' Q7 i
- ImageMagick& S/ n* r0 r! o
- zbar7 E$ M* Z9 {0 q v& f3 o
- php-zbarcode0 k9 k* |/ g0 w9 H* ~4 E
* e E; r; F) J* y* i6 C2、方法二; P$ n5 c9 |+ z
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以$ g' o$ ~" Q+ j9 y3 \5 F
qrReader类:https://github.com/baagee/php_QrReader- y8 {. q( s1 O7 X1 v
1 l( A M8 p7 i: G- K% n- $ u+ y. {6 p& e! G7 T# R: J
- $qrcode = new QrReader('./test_logo.png'); //图片路径
4 n$ ~$ \: h( a; O; u - ! |0 i, h# W/ L. L) [
- $text = $qrcode->text(); //返回识别后的文本
4 H9 G, u! M: J$ p
$ x6 y9 B. \1 `/ R6 h2 ^) W9 F- echo $text;
* p" g1 N+ I4 P - 5 D6 ^ z/ R# e2 O% [( E
- 6 T- B7 M8 _/ ?4 ~ ~$ T/ M
复制代码 " n4 f$ Z& L/ A- v
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
3 R# b$ |( v4 }9 d. o( Q" G/ F: C O; g
' e& U% J; Q9 |! L4 X, z# a# k! L1 |/ V5 X- p0 I6 x# I
- P% d% k- t; y
8 T/ r: P% T/ v
' U" M9 }* Q6 J
4 N5 V. U @1 n# t( W' l
! X: @/ r6 j* o' p/ j% ~" G5 ]& X
) ]6 }9 g- D0 p o* n% { |
|