管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。" D: i* G; p! Z6 O% m; G3 L
---------------------------------------------------------------------------------------------------- y6 Y I( A# u4 L
二维码的分类
; o5 E t1 s {5 p+ R0 e3 J线性堆叠式二维码
' w5 c+ O( ~9 L" Z/ q: w; Z% k/ j0 g2 z0 L w& G% P; I5 R$ N
矩阵式二维码, ?6 B$ {/ a' p6 p
0 X/ B/ l2 P! q I& n二维码的优缺点) l# e' n; Z# B+ e
优点
2 ?3 P. ?3 j0 B z: x9 Y) W8 @! @9 ^信息容量大6 E5 a9 {4 s# ~0 J9 a+ ?, h# ~
( Q8 v0 l, k+ H
编码范围广( M+ O9 O& Z6 e6 ~7 C+ s1 p6 b/ I. |5 `
4 l8 Q7 Y* Y6 z3 @
容错能力强
0 O6 j/ m- C9 j' ]& q5 }) \2 [" [
' \ C% { b$ ?: `8 r译码可靠性高, g3 y! t8 |- U/ L! `
! T- g- P+ Q% e( m& ]5 j
可引入加密措施
8 `8 T7 }4 p; @- b/ q4 S/ T
; v0 j8 g! Y) m6 X; V/ _成本低,易制作
# P: b2 Q8 g! M/ H- _# z! c1 O$ L/ l- V) H+ I1 I
缺点
1 A. f8 U0 P/ V( L* D二维码技术成为手机病毒、钓鱼网站传播的新渠道8 o" ?+ b" F% d/ U; |
) x; D* ~8 v( Q- O
信息泄密- ^: Q$ C7 S. d- l, G
) o0 J" O# a k& R5 L& N9 @目前流行的三大国际标准
6 @; n5 @. E3 Z( x9 e! I5 ]+ @PDF417:不支持中文: g7 [1 m& Y2 Y
. b6 C. o4 [4 K3 T4 [DM:专利未公开,需支付专利费用1 Y2 h7 Y9 p( b# Q- R
( z: Z4 [& X1 I+ S8 _- N; |
QR CODE:专利公开,支持中文+ L5 k W! l; o8 z. l1 o( Y g
# W/ C2 F |, R6 J( `. M; r) C
QR CODE 纠错能力8 K+ e2 M9 t, m
L级:约可纠错7%的数据码字
6 N X+ h* ~# F0 G( r- l* Q) M, `# m$ i: x0 Z+ b
M级:约可纠错15%的数据码字
p( n0 a' ~, T H" A8 u7 P X4 p' f# I& d4 p# ?5 E8 \
Q级:约可纠错25%的数据码字
2 j- C1 N7 N7 i; K2 d, d; h0 N0 S, W0 @: G# i1 j/ u
H级:约可纠错30%的数据码字/ t6 U6 l$ D' E9 |3 a# u) e& P! E' v
# _: X0 Z8 V) \前提条件
# b4 I! z4 y$ jGD库/ E0 [% i, Z: u' C1 S' L
( A4 j2 j+ f5 c% P
一、PHP生成QR CODE. x, ~ V( D/ N. |; I
官网:http://phpqrcode.sourceforge.net/
$ p1 h3 C3 z" f3 l2 `, U9 A/ r
) q# k: e3 x6 f' C下载源码:https://github.com/endroid/qr-code
0 h, Y" g, e H7 U6 h) b( S
3 i: c& \' I, R: i k1 B7 m目录结构0 q8 [8 G( P5 m+ P9 h2 m
- t1 D$ y: T _
5 n/ y0 r/ Y) E0 T% m& }% m6 i1、qrcode_create.php
r7 @3 B6 A+ }ps:生成普通二维码& c( i8 k' t/ f2 |# p; G
6 q0 R+ v! [, z4 F/ g! X- include_once "./qrcode/phpqrcode.php";/**" ]3 C1 {$ R; v# y9 z+ ~3 {
1 s$ |# T0 S& C# {9 f# a: c- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
4 n( c! C8 W: p
5 s2 V2 P6 z c0 W% o- * 在浏览器上直接生成一个二维码(内容为abc)1 L; R# x# Q1 U) D: q, `& ~2 R4 m
- ; j9 L1 |5 L5 ^" a. m- ~. b
- */QRcode::png("abc");) ^6 \2 C# n' F/ A3 u* C+ C
! L+ |; W3 V7 c- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**8 q' m8 D8 B: _: y) w
- , `2 F+ w, Q. A' ]+ M M% e9 v
- * 生成文件到本地2 u: H8 G+ N, [
- . l& M$ X# ]+ n8 s1 E
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)2 h: _0 S# N% b( e% D4 S+ |9 m
- - g9 W; e7 ?9 }6 q$ \
- * PS:$saveandprint源码的p6参数做了修改
) c2 d' q) h' X$ Q6 L
/ T2 V, F! x) M$ s7 t- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);5 y1 J$ a! ]" Y" d W" y& v
- 6 F2 L/ ]1 M3 ?
- / T8 U( l1 J) m! v) F, }
复制代码
- F$ [+ G9 B' \2、qrcode_logo.php
+ o3 y' z6 {3 l( `! e2 |0 Hps:生成带Logo的二维码
" U4 m. e. F$ n* I; @) k Y- /**6 C% N; G; C/ ]) ^- P) S
- % I1 I' t% F1 k: }
- * Created by PhpStorm.
. D; I8 m; g) i% U3 i - ! @7 c3 }5 H: O8 C; z# t
- * User: user
% j8 B" y4 {6 R2 \9 \3 i - ! w3 h" u: M' ~
- * Date: 2018/8/16
/ E3 @# C3 z# Y* B - b, B( G/ Z1 m; [/ L# L
- * Time: 10:43) _- g. b+ l* C' a+ v0 z4 x; F
& u% O# z4 F3 S" x8 Z0 Q- */include "./qrcode/phpqrcode.php";$txt = "测试内容";
" @$ l! G7 [3 d p8 { - ' o/ Q9 N1 M" [" s' ~+ w
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称; b. `- t( D1 H; {
/ q, K3 Q" _9 y- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
, I1 j$ V) I9 D V* l+ G - 0 _ i" M9 i0 D, {% W
- $margin = 2;//边距
6 ]+ V4 g+ g( A' q' A5 _8 |$ Y( Q - 2 I0 h: D9 i: a' I6 O: L5 {8 A U
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
% E5 N( V# _' F, ^9 Q6 G7 M - 4 F( r& u! L+ G4 T; @) A
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ 8 @' N( L) y8 w3 v0 A( c+ p8 |% n
- ) i0 {* c- ]& j6 d! R2 c
- $QR = $picPathAndName; //已经生成的原始二维码图
. G* z1 r' ~: ^/ j4 B1 k& k - : e+ y% w8 r& f3 x! l8 R: W
- $Logo = './pic/logo.png';
- t9 I9 h/ F: T8 t% `0 h
$ d; _ R# y. V( C' a- $Logo_re = './pic/test_logo.png';
7 _( b$ F9 C; |3 k - 6 ^2 g$ y. R7 t2 @6 K
- $QR = imagecreatefromstring(file_get_contents($QR)); 1 @# Q- L! `: ~' F. l. W$ g
# |0 P$ [) y. M9 ?8 O- $Logo = imagecreatefromstring(file_get_contents($Logo));
/ q: h$ ]! |& W) U/ S' N - 5 R- D1 d' s# n7 x: |3 ?5 X# y, b
- $QR_width = imagesx($QR); //二维码图片宽度) P2 T- C( L6 a/ `, T
( p) }& K) F. E* N7 \- $QR_height = imagesy($QR); //二维码图片高度
$ L9 V6 s3 w5 n
% w# a2 J" {3 f# |- $logo_width = imagesx($Logo); //logo图片宽度
* ], a3 E0 C' M$ f - 0 |+ K6 S' O# B5 a; W$ `
- $logo_height = imagesy($Logo); //logo图片高度
0 k, D! M0 t ?
3 F8 q# o0 R! k0 {8 \! |9 u! M- $logo_qr_width = $QR_width / 5; 7 k/ w) c ~0 b5 ?5 e
) {# x" u% d* V9 T- $scale = $logo_width / $logo_qr_width; 3 K- O7 J4 m3 J, H/ z3 V9 E
( o. o0 U( ^1 O: W a- $logo_qr_height = $logo_height / $scale; , D1 b" e, v; {2 G9 ]
2 P; N9 k* ^$ e( b- $from_width = ($QR_width - $logo_qr_width) / 2;
/ ^. F3 ~7 x2 M6 l( M# r1 h j - $ \% U+ P; X% L$ G" A
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); ! H: ^7 q1 @, R4 \2 W6 o
" ]9 G" U# n, e- //输出图片
( i1 A' D C p' _# c
. `+ C9 e) T) @6 d- imagepng($QR, $Logo_re);! v8 x+ O T, x3 b& ^8 g& \5 h
- 3 [" @ @$ ~& Y2 A' o) M
- }
0 h5 a3 a+ r+ m! H/ x - & t; K0 W7 z1 g) c2 a7 |
- 5 I3 h6 H' Z- A8 R! G4 z" h
复制代码 3、qrcode_vcard.php (生成电子签名)
P6 K+ s( s( W( U
3 N S0 s4 V3 ?6 D5 zvCard格式:https://zh.wikipedia.org/wiki/VCard1 h$ h' b) {/ M9 I
, f% i' W: g @: l: R) Q
# o2 P. B, v+ h4 g- * Created by PhpStorm.
7 Y! m/ M$ y& }4 s3 D - / t/ h+ L( f( ~1 u
- * User: user
$ C; k' B6 }) l4 S6 r: A( l - 8 c7 O0 [0 t; ]" N( m. _( Y: B$ X
- * Date: 2018/8/15$ _4 s. L+ A4 K @" S' i' s
- # a% x, C9 B! k+ `7 V
- * Time: 23:00# I8 Z* s" Y" G G
/ H, x1 N ~' L% v D7 t- */require_once "./qrcode/phpqrcode.php";/**, |$ G9 A/ i6 f4 V+ U
/ [+ m6 z8 V* H8 |# x: J v- * 生成电子签名) g% j. A/ i7 a6 [) a
- ( S; ]# q! i3 I/ b6 ]
- * PS;使用微信扫描二维码' y* h9 K* l/ K4 c, R. y# j" |; Z
* [/ X- p. H/ I% Y/ S$ o$ z- */$content = 'BEGIN:VCARD' . "\n";//起始标志
6 S6 b: z- ^$ @$ x - + w. j; M! A4 `2 F
- $content .= 'VERSION:2.1' . "\n";//当前版本) _. U2 @. T" W2 p$ t1 G2 |
f" a4 H: f$ Y3 ~, w- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名# M# Q6 O) p% V: m
- 5 h! M& U9 W8 P: l1 z8 [) j
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
" ^! \. v( ~+ K }, N& O0 k7 \ - # X [: [8 F3 K0 _* B# |
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位) I' r# ]5 y) p! H, A$ R
* L7 k% \: n6 R& d, r! L- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话4 G) e, w: Q7 q" F' P
- " S$ }3 b% X% `3 ?' Y: c
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址+ f# J- l# a7 {2 h) b+ L
- ' J$ v! q2 P- A
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
) J8 g( O; m. o6 o - % J- S, X4 i: l6 k ]1 ^
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话. k. d6 Z% y9 e
( J' j# `4 O+ E. `$ p; [' D2 h& D- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱7 v- q# V ]6 ~+ k, _3 q4 f7 r
. H- a- u( }2 {0 g; r- $content .= 'URL:www.baidu.com' . "\n";//个人主页, J# u( ?8 m& R6 p8 T
8 ^- y; }1 O+ L, M# G/ W- $content .= 'END:VCARD' . "\n";//结束标志
' n& n* C5 [- M; I, E
; @2 U% L2 C) x- QRcode::png($content);
' y5 s! g7 e6 O( O - ; B( ~$ h% i5 E' E: @& U
- : J n! C- E5 P9 Q0 p& G
复制代码 . |: o# U/ d2 E
相关文章推荐:
, E: N% @- f. d1.PHP生成微信二维码实例* t4 m1 q5 ?( d/ ], w
2.php网址转换生成二维码9 e N4 o: ?) l' ^4 n6 p
相关视频推荐:
7 z0 Z2 D3 s$ [$ |6 R, Z- b1.独孤九贱(4)_PHP视频教程
/ f9 H6 V" W8 C, k) H% N二、JQUERY生成QR CODE
4 D V9 M% p% j- p% u. u- ~* g8 \源码地址:https://github.com/jeromeetienne/jquery-qrcode) n2 T+ o8 s% }; T
% F' S( `) G5 H1 ijquery_create.php
; d5 `2 ^5 _: d6 N5 y9 V" h& N" x/ p: T3 l4 Q9 H, c
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
* \' U3 J. |/ H5 T) D, _! X三、PHP识别二维码
- m( P9 h2 m6 i0 @1、方法一% v4 O6 U: [$ y0 h
环境需求,安装如下扩展
; B. w5 D& o: |" o3 ]( q- ImageMagick9 q3 K& ^# \* O7 E5 V
- zbar' K, {0 Q0 ?' S- U0 o% F
- php-zbarcode
S6 i2 ]; Q+ m( l/ _. ~
) H0 p n) W4 D0 g5 l8 m2、方法二* v' F* k, u; K& j; ~; T( W3 ?
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以+ v1 O& z0 j& X% m1 a. g. [
qrReader类:https://github.com/baagee/php_QrReader
* V: n6 `) i* S6 B% ]
% c; d8 C9 D. e* k7 w
. Y+ L/ ]; o0 [$ P2 R' s5 Q3 n- $qrcode = new QrReader('./test_logo.png'); //图片路径; y* j0 C. s' w) ]1 W3 r7 B3 H
3 e4 c! R$ Y9 S+ M- $text = $qrcode->text(); //返回识别后的文本4 |$ T1 U0 F; A; D M0 j0 A# e" ]
- & V8 a( j4 T- [ g( V
- echo $text;
3 O, N2 M# L, \3 W; ]
& E: d1 G$ ~! L: W8 l
# ~/ i# C1 i& A
复制代码 ' s; f8 Z/ a% {$ k9 {1 m/ w2 r: _
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
9 |5 |/ D: n! M6 d) \$ N9 H6 G$ C9 V% `/ `
4 F' u# Q. f4 R0 m/ ^: z) e& d
4 c- W: c$ g, I/ w7 J
0 ^0 J; I% o8 Q6 n. a
8 m+ i% m5 s6 i* I" J
5 S) X( _" K* @$ r
- A6 U, u" @! u, j; X# J# ?9 o/ C2 w6 ?- o+ b5 I
3 q U1 ]: v* Z7 j% ~1 R! z
|
|