管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
: e# X' u- A) b4 p---------------------------------------------------------------------------------------------------
1 I3 D7 g+ Z5 v, B% d二维码的分类
4 U/ F# f* [" a; k5 a线性堆叠式二维码: [9 g \8 ^ e1 I) h
' V# p1 g& M a k/ ^/ a. ~$ l+ i2 y矩阵式二维码
1 ]- ?4 u, N6 L3 Q1 P
@: z, J q; n; s: b0 a3 h( Q二维码的优缺点
& k/ k& v; Z; u4 S% i) d优点
\% _5 r2 U* U4 K& [信息容量大0 R; e9 Q7 \. G. q5 M* [6 B
: p+ ^; f7 d( {5 I( D6 N! s8 q
编码范围广: c& ~+ i$ `8 \
9 y* K; w0 P& {: {容错能力强
! |0 E4 L/ R n* U+ v( E
1 K" Y! ^9 m; B6 d0 D- q+ ?译码可靠性高
7 }: G& ^( j( J7 f2 Z1 }
% d2 W0 v. Z( U9 Q8 e$ Q* y可引入加密措施
( v9 h1 h/ z/ m( b5 l" {( G1 |8 m
成本低,易制作
8 P2 ^! H G; @ Q+ M" P6 j* J; A v7 A
缺点
3 b" }. h3 {8 I0 w+ |二维码技术成为手机病毒、钓鱼网站传播的新渠道
& P" }9 D5 {4 P$ k+ s- E2 {5 ^/ J
信息泄密
3 U& q7 C8 A9 u4 r( [$ ]9 P h( T4 v3 W! }. m4 }" e
目前流行的三大国际标准 `1 _+ e! q- g: m
PDF417:不支持中文& n! b- ?# R! g* d9 E- q% y( G; b
) q, ?# N& M* L( y- g2 MDM:专利未公开,需支付专利费用3 U; d1 G" Y1 M) k6 h" i
( N) D) w8 u* e+ ?
QR CODE:专利公开,支持中文
1 l- R# X/ Z# Q3 i. x0 w) y. `' S8 X/ G- c+ I; I
QR CODE 纠错能力
- N. l7 Z8 Y7 hL级:约可纠错7%的数据码字
" q- j* R2 r M$ y5 Z: }, ~
- O. f. S, X& @! LM级:约可纠错15%的数据码字4 O; j! e h1 p" y$ P. a
& W9 H; G% f8 u, b5 l# N$ U/ Y5 v) i
Q级:约可纠错25%的数据码字# J8 |8 E! ^; u; U; J* l- u
& q, A: W9 F( f% x( o) w i
H级:约可纠错30%的数据码字
# X- K7 r8 }3 a8 Q5 J
, S7 Q& a! R8 _# n* \3 a" Q8 N前提条件
* q: Q$ b2 {" L7 r+ A% x! wGD库
' z0 ^, y1 J; ?$ p9 g! B/ k- z: G, w8 e3 o/ p
一、PHP生成QR CODE! C; K! c2 k% W% _( T) c2 p
官网:http://phpqrcode.sourceforge.net/ Z8 D2 z* Y% T9 U3 k0 j3 y
3 } A% q& F! e6 m# o! d/ p' `1 Q
下载源码:https://github.com/endroid/qr-code+ H9 x7 ]: B0 ~- S4 ~, g# ~1 c
! Y/ M8 R n5 H& U
目录结构
( n8 x. v3 \7 c
# l& j3 @$ [6 @: n! r
2 f# e* l% v5 o. R) O1 a1、qrcode_create.php
. h0 m7 W+ O0 Ips:生成普通二维码% m d" r* h9 }: n9 I* v6 k1 I
0 n! e! ?$ g5 K: V( Q7 K3 c0 q# E- include_once "./qrcode/phpqrcode.php";/**
% V% U w, l/ ~/ j; W. A0 I
B" m% \, P$ Q% }* f7 W- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
$ ~3 H5 i; ]; m5 a5 l4 w: L- e' B - 2 @3 F" y* B, b" K
- * 在浏览器上直接生成一个二维码(内容为abc)
8 R7 b' j, t- g# g' ?& K
, _* h+ d- H+ x- */QRcode::png("abc");6 U# e( w6 t- t8 d# B/ G
- , J2 u8 `7 k/ C. `
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
' R' B3 h: e9 \
1 f7 F2 t T4 E- * 生成文件到本地
- o5 `" s& \% v3 h# B' d& [ - - p9 l' m0 \0 [; x7 U
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
; e& i0 ^. `0 x- }1 B3 {
& ^+ Z I! ~. q* p" v7 p- * PS:$saveandprint源码的p6参数做了修改
$ N) T$ `2 `# ]7 p- @ - : O- _+ O! ~; |1 G6 x' Q) A
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
8 G# t N* ` M
# ?: o5 f/ Q4 `
2 a- e8 s$ _% z/ O
复制代码
0 @4 j6 z. s1 m% e; ?: F2、qrcode_logo.php
* O: Q; `9 m5 p- |. K9 r9 \- Ips:生成带Logo的二维码- 1 B. R0 B3 M* C& j9 h
- /** U9 u* L3 z4 t% k4 L
- 5 y5 I$ \ O# `5 M* E& }% X
- * Created by PhpStorm.
; X `- M1 h) _, [) f4 v5 j/ r% E - 1 h$ ?" Q6 r0 @! g' O
- * User: user* _2 n5 _; Y% w/ O+ Y! `
$ c8 R- E7 i; t! ~& t- * Date: 2018/8/168 K' l g4 ^! d/ A6 X
& P% Z1 x8 |6 g& B r- * Time: 10:43# G7 S( |+ Q2 g/ Q) ~; K+ H
- + e0 s) ]9 X" x/ w. y. P
- */include "./qrcode/phpqrcode.php";$txt = "测试内容"; O) q0 ]) c( j# Y5 h: x$ r S
- 7 l/ y% l' `/ W+ a
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
4 P1 _ d) {+ h! N1 k. p8 a3 Q# A - 3 ~9 g/ m. n- E
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
$ O3 U; T$ r* C2 _+ ?. ]# R& N - 8 u" X1 |/ {& ^& k/ i
- $margin = 2;//边距4 j2 a8 f% B: w/ O" @
- 9 c/ f! |0 h& t, O# i: G4 ]$ q
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片) ~$ i$ o, y# Y$ J; W* R) D6 w1 H
- 6 k0 p$ \! J3 o9 f% T3 \* x
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ ; Q% N' o7 R3 Y- B. Q# a. D$ p1 m
- 7 E$ G" g! n5 z
- $QR = $picPathAndName; //已经生成的原始二维码图
2 C! W+ x* \7 R* P0 X0 V - * ^- d3 j9 u- @0 V+ h) [3 S
- $Logo = './pic/logo.png';
G( m" f) } D- E9 ^ - 3 s& F$ @1 q2 N% L
- $Logo_re = './pic/test_logo.png';
F7 Q( `" T. N9 V - 0 ?) l; [+ f" i+ v
- $QR = imagecreatefromstring(file_get_contents($QR));
0 N6 \% `# O: B. Y Q" u - ; W3 y$ k9 d4 ?0 E8 W
- $Logo = imagecreatefromstring(file_get_contents($Logo)); . |8 N. c- n( i+ O6 T) G1 }7 c
- 7 f; v/ Z1 a/ h# q) p
- $QR_width = imagesx($QR); //二维码图片宽度& c. o* P u9 X" s( O
- # l( m! e4 A! Z; ?; Z7 ?! x
- $QR_height = imagesy($QR); //二维码图片高度
9 i' n) K" v B
2 ]( ]6 R3 _: ~2 `" Z2 j3 d& S' T- $logo_width = imagesx($Logo); //logo图片宽度
- O6 T, K: \7 s4 z# A2 `
3 Y$ L8 w$ `$ K7 @# o5 X- $logo_height = imagesy($Logo); //logo图片高度
1 T7 V6 {, C; Q" B& W2 |; c - # R9 x& z6 ~' \' [
- $logo_qr_width = $QR_width / 5;
7 I* X0 o/ j+ M: B, c - ; J; _9 z9 U" w: W
- $scale = $logo_width / $logo_qr_width; 5 l% I3 f9 ^8 ~& x
* u/ `: e( w3 g4 f$ \4 m- $logo_qr_height = $logo_height / $scale;
1 a, {; K8 F4 n) {! d7 f
& x3 Q2 Q" s7 o1 z8 w$ [' s. W- $from_width = ($QR_width - $logo_qr_width) / 2;4 q+ G' I: l8 n
& X( q" L$ i8 J; f( Y- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
( v6 h' r8 Z5 _! w8 I
: y. h' i7 S: N; u9 a, ~, W- //输出图片! p& I& h7 ?( U8 s$ U7 s
4 H/ G/ @3 j8 `$ N- imagepng($QR, $Logo_re);
% o0 E; y- c9 j. k) j' |- T& L* x0 g - 0 z1 i( b3 P4 L* A/ V8 z
- }; w: W6 X9 Y' G" `+ c. t6 l/ \
; H! S* O6 _8 g
2 a/ Z9 J8 o, }$ m
复制代码 3、qrcode_vcard.php (生成电子签名)
2 @ M; S4 M) N! ~6 M& ?8 R, j( _$ H
% M2 _6 e: f+ Z0 @9 }vCard格式:https://zh.wikipedia.org/wiki/VCard
/ t2 Q) \ y% N- Z/ ^ [( t3 W$ i/ m" m$ [# r" g0 _5 I
- ' B! _. Z! y' v: x/ G$ v2 s2 |& N" l
- * Created by PhpStorm.6 j, L& t8 u# a3 \) c3 l
- - a1 l: P4 X7 }5 p, Y: E7 a4 z
- * User: user* f9 W5 P$ }( O, I z
3 i5 D& t9 u) \8 ~- V- * Date: 2018/8/15. p( L8 N" ~3 `! c7 h% a
- , M: P( ^. V V; \* J" F
- * Time: 23:00* O* ^3 R, t( X/ C4 W: s
4 w- D1 I! G$ _& X0 Q- */require_once "./qrcode/phpqrcode.php";/**& w5 \; O% F. A G7 g, [% d6 s7 g# s
7 Q- y8 r0 p$ U! H- * 生成电子签名
5 h8 X; ]/ p8 @" y" ^9 y7 e - , C7 a( i/ t/ B8 x$ j
- * PS;使用微信扫描二维码4 S) p4 |4 ?; s
7 C! X" a/ E/ c8 z, ?- */$content = 'BEGIN:VCARD' . "\n";//起始标志9 [) `" K7 _* q9 y: f$ S# A2 t
- # M2 K3 F3 a e% ^5 a" u
- $content .= 'VERSION:2.1' . "\n";//当前版本8 h* W8 Q! F# M" ?5 N9 r) L
- o/ j' v5 {3 [! F# D, x- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名4 b( b2 d$ S+ P+ i+ ]* t; v
8 C$ ~* s" o7 t4 k7 g. R0 y- {3 f- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称& o% |+ @1 g% J$ [2 n L8 z
- ) j5 b$ ?8 X- t3 B: v! N+ a
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
( M$ z- E" V/ _ - + i7 r1 ]. N7 u5 n
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话! X2 J: y: I* j" V1 r5 Z
- 2 r: n% [& \9 `. \$ P2 `
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址, {$ B4 u# {( B/ q9 t
- i0 T, v$ n( D/ x
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)3 E( `# ~- ] e# r/ j
- ( p8 O( d( S+ Y- {! }7 W+ O7 h. |
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话1 K( C2 k7 y* y; W- u( `$ V
; m+ X# i6 M5 z, L; ~8 P1 s- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
/ o" S' i+ I. ~) `0 H
3 R: C9 X1 K, t; G- $content .= 'URL:www.baidu.com' . "\n";//个人主页
5 v' h% L! m# B. b1 z
" e: S8 b* g. Z; t- r! l$ G- $content .= 'END:VCARD' . "\n";//结束标志
& D/ Q% i ~) W( F7 U - $ g8 C7 v% h' k/ r6 ~4 L
- QRcode::png($content);
& Y& R7 N* @, x' \& {' E - 4 ?4 _% r' L# s# R2 A* G
- 5 B* c4 Q9 e+ p t1 c) M! p3 n6 A( o
复制代码 3 z* b) y2 E) n' M& u+ l
相关文章推荐:; h, N- A. O$ {! }
1.PHP生成微信二维码实例" j9 h9 F( p2 ~, K
2.php网址转换生成二维码
1 a; u# C9 o% }' s相关视频推荐:
; a& v9 N0 Y4 m! b1.独孤九贱(4)_PHP视频教程 ]! I2 A* ^9 ~
二、JQUERY生成QR CODE5 S, I F5 b* U6 N3 K. E+ S6 ]' h
源码地址:https://github.com/jeromeetienne/jquery-qrcode/ k7 \* q; c3 @
- ^* Z8 z! m% g" h3 [4 l5 m! v
jquery_create.php
& l7 v3 C* l0 l- w' ?' ?# w4 l) g9 @" |% p
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 ' z% x T0 R, G! m! Y# J1 s
三、PHP识别二维码, m+ l3 ^ t1 m9 |8 B
1、方法一
! g6 L& c2 [. ^ n2 U( t环境需求,安装如下扩展) d' F4 g$ E2 m0 @& b" Z1 B
- ImageMagick8 W( P) y) p# N* U# C: t) Y
- zbar5 G* L$ v5 X- s+ @
- php-zbarcode& X9 F! `- D4 B' E
% n0 s& O7 Y" c# J2、方法二
8 q* \% s, Q9 f% c1 RPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
) e2 o# v& `/ ?qrReader类:https://github.com/baagee/php_QrReader Y6 b- A9 b, p, @0 o0 p; s' b
( c2 [# c9 j8 U4 [7 Q( v
7 N9 ^7 B& A4 I1 ^. [5 M. @- $qrcode = new QrReader('./test_logo.png'); //图片路径
1 g5 W7 p6 l+ l4 J0 A
3 ~) x E6 W+ v3 P5 f- $text = $qrcode->text(); //返回识别后的文本
7 I0 P& C( H* F4 y" N+ a+ `
- S- z. D- [; I$ F. @8 U$ _8 E- echo $text;7 H$ j8 i" A9 v) n& L
- 2 ^5 }6 A1 b/ P- r* N
2 B. S9 r. g4 h( B: x% q
复制代码
9 Y4 ^* D) U! D- u链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
0 Q) D4 f: K/ ?- b: H* T9 F* s; Y& B1 r, p
) V: [, M" u0 c/ w E. M
2 {: L' O6 q( D5 p. Q; Z* f$ ~. Q. t9 ?1 k
# e+ b& H7 Q& W9 v1 \" j4 H. ?1 i
$ Z) s G) J0 a6 V+ S
# Z7 M2 B" f8 G' P
( U1 K& h9 }" o$ I8 i0 l: m0 M: a @% z( u/ F
|
|