管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。8 q6 j/ @8 t* @, L! k9 e3 t
---------------------------------------------------------------------------------------------------
# m+ a1 v1 J# h U d/ ?/ a二维码的分类
8 {; J. ~ L2 q _线性堆叠式二维码. f; Z8 a* T) }: _( M$ p' f( b
$ H- A/ }5 Q; } l9 r矩阵式二维码
( i$ f4 N% t [- v6 O" S4 R
5 }9 i$ D# U" f- O1 d7 [二维码的优缺点
8 m! j5 z- ? \6 U# y7 M9 G优点7 y7 H. l4 S* _; \2 V6 n4 T" j* H! K
信息容量大
: w2 z, Z/ }' R3 r
7 L3 @6 z3 S* p% e, G/ O% B! {编码范围广
' z+ s; Y6 t, S; U
2 g: R9 O$ s9 Y: Y容错能力强. p+ f- u1 B( K4 q) e8 b
2 E: I& v3 {# H- N; g
译码可靠性高
* A" t0 F9 o/ Q% j4 x3 b' v% i2 m% f& Y( s# k: D
可引入加密措施/ z/ T! J$ L5 X: s0 x
. a7 q8 e3 A0 B6 P' {* @
成本低,易制作
2 \0 b! G% Z" Y: o2 ]! |( d5 }0 ]& R2 h9 _4 \0 s
缺点 A2 y) j7 G: u9 D$ O6 ]2 ^
二维码技术成为手机病毒、钓鱼网站传播的新渠道- R4 J. e* \* x7 l" P9 P* b
" i4 b3 Z, P4 ?8 T" C8 X$ U
信息泄密
2 ~' v" B$ N0 t8 R0 F2 P9 V% e% Q9 Y
目前流行的三大国际标准$ u# U# Y7 D) Q! U/ a% |
PDF417:不支持中文
1 ]& a, E. m+ \/ I! z# c( v2 |$ K# y9 f
DM:专利未公开,需支付专利费用3 b" w8 i9 o+ t3 H9 D, C
9 Q% j1 ]7 ~" RQR CODE:专利公开,支持中文1 G; {" b' L' j1 w. C
5 l+ P; c4 A- G0 M x9 n9 ^QR CODE 纠错能力5 e% x8 E! r- ~! q7 x5 F0 r
L级:约可纠错7%的数据码字
% F( O4 z; {$ _1 x" g* j( [' t: v/ H& s* h9 j3 Q
M级:约可纠错15%的数据码字
6 p0 u$ L- x. V% [4 H
1 O% E; I; a0 A/ K0 iQ级:约可纠错25%的数据码字
: I4 M+ F2 O" O
$ T; O! A( U' m: [$ N7 `# `H级:约可纠错30%的数据码字
4 m7 Q( \" F- z" u( n! X! {. ^. j4 ^! N8 f+ D
前提条件
) Q5 t' ?( F* c8 i1 L* BGD库
, Z5 T8 h0 K+ j9 J" m( y, `
( m+ l/ j$ h) J9 y0 G# H一、PHP生成QR CODE
) V7 s9 B5 x, d& g# k/ f官网:http://phpqrcode.sourceforge.net/
, z5 j; [# }( _. N* Y1 e, k0 D4 S: I' ~ O; y
下载源码:https://github.com/endroid/qr-code* [% T0 }5 l$ g# r: [- z
3 u9 u- c; ]6 K( W% x8 H- k目录结构
; u( }) K8 j* d+ R/ i
& Q% `; {" H4 ?% P. s9 ^
* h' ?) |# K/ F0 f# B' m1、qrcode_create.php
4 I9 f* f ^$ A1 ~/ Ups:生成普通二维码
1 X4 V" i* i$ Z. W: B$ B) B
7 l5 V5 E& b) q6 W# k- include_once "./qrcode/phpqrcode.php";/**2 e5 N- r8 @/ a; H5 ~2 c
! H- a/ ~; A4 C, r1 Q( [- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
: w4 @* _& }1 X2 a* P9 J, Q - 8 ?. Y1 F Y5 \( J6 U% q2 H- s
- * 在浏览器上直接生成一个二维码(内容为abc)
6 E2 B! k$ }) Q6 L9 I; s
6 L3 f; Z3 h" n% D. \- */QRcode::png("abc");) u, [) {' [) \1 G, A0 B
- K7 |$ I3 \6 M8 [+ s% [8 S
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**! \% c, K" I8 o
- . g( i8 p+ B% H" H* _5 Q! j9 r
- * 生成文件到本地. Z$ |( | C- X" A7 D* U- I" e7 L2 I
C+ W) i& z, ]" c# r0 M- L7 S- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
! p, {6 x8 |" N$ M E$ x2 A
' a3 x1 l: G1 c/ [$ O) I- * PS:$saveandprint源码的p6参数做了修改
3 t8 ]# ?& _- k
/ | c S: M1 N1 C- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false); {- C" H9 l3 w8 v! h
/ _4 B* {4 z: J# r2 l% M
- {/ u# |; G3 ^4 `5 B, [9 x
复制代码 ( Y! L" g; a# E
2、qrcode_logo.php
# T# y4 Q( L' ?& H' {ps:生成带Logo的二维码
, `+ c& v# @7 O& x- /**" H0 x# A- o: j1 u1 _( K
$ T% S) H% T. ^. ]2 N- * Created by PhpStorm.
) P# u6 H( ]2 F1 Z7 Z! c - ; x; l) i6 o8 d, N
- * User: user5 B d/ T0 u7 a( q9 a
- 7 B* C8 P+ w5 l- p
- * Date: 2018/8/16
T6 J, C A% a: P% ]- Z& R
, O) B0 n0 q; o: g- * Time: 10:43
4 B* D. N% P9 k- g* y - ! n1 S2 Q* D# ]& P
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";
0 o( f4 a) J5 v) Y8 b$ y - ' [5 u3 V5 j' Y) [" Z; U* i
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称* |# X) q0 N4 W1 h3 [
2 G4 G/ G* g, I/ [) [- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是# p! p$ K S5 J$ {: N: l& s1 {
- , s6 w0 [8 m$ d2 b- b) |
- $margin = 2;//边距
( N+ ~3 p2 G5 H9 z j' C
: \1 H, b% {6 ?' x5 z- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
- Y$ p1 o. g9 N$ L k1 x" N3 s w - 4 s. R' B( j/ ]6 y% ^
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ - B& I3 T) \ O! i& |& u
* |7 ^( d* P5 ]1 b+ ]: D- $QR = $picPathAndName; //已经生成的原始二维码图
# H. d1 U$ d, c+ M. n+ c' @, k7 I - 0 o, C% @, t9 D" W7 ^
- $Logo = './pic/logo.png'; 4 Q# ~' b' M) @$ b( _( o& h& r0 {
- - n2 U! Q2 n8 M3 c! l
- $Logo_re = './pic/test_logo.png';
( n, O4 C9 p7 j9 q+ ^% _& Z - 4 ~$ x) z$ e$ F$ S- w; `9 L
- $QR = imagecreatefromstring(file_get_contents($QR)); " Q2 K' g! O( i" z* f6 X& [
n" K" e0 J; C9 I. H- $Logo = imagecreatefromstring(file_get_contents($Logo));
: D- [4 N5 k7 X6 o7 f; w+ M( M
y! _5 U+ K- H5 @7 |- $QR_width = imagesx($QR); //二维码图片宽度
& n, F" k9 P. N' U3 T, L/ |/ K' l( Y
: ?. g! u5 {5 p; Z: W! J- $QR_height = imagesy($QR); //二维码图片高度! T! o# I# X O) N5 {- t" j; s% P
- 4 y7 L7 s k% q& y
- $logo_width = imagesx($Logo); //logo图片宽度$ B6 z }0 w1 K# g- S- I: Z! K
: j: \2 N3 ]* ? u) _- $logo_height = imagesy($Logo); //logo图片高度
5 L, ~% @5 e w4 C& w/ _' T
: ^ d H/ I' e: Q) K! U) A- $logo_qr_width = $QR_width / 5;
. R6 \; H0 b9 O2 m) a
, W& A' E' @- c- $scale = $logo_width / $logo_qr_width; 9 G* h4 P% |9 l* b( N* Q/ s
- 9 h: Z( l; z; P0 l& ~0 u
- $logo_qr_height = $logo_height / $scale; 1 W5 P, a% p6 O% k' z
: E+ X! t1 K- m6 x6 ?8 I0 t: q- $from_width = ($QR_width - $logo_qr_width) / 2;
# ^: l- H! L# X - 5 J- B: R% w7 j+ S( r/ U3 Y% P
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
. I! X2 d. ?& Q; s8 w9 p6 Q ?0 y
8 ?5 p/ a( f* Z9 N4 p- //输出图片/ H" U, U! L* c6 h8 R, ^: X$ X
) X1 O5 C) c( i; f- imagepng($QR, $Logo_re);
, U P6 y7 O* n5 Z - T" }' H+ g6 v. g2 L. m) V2 E
- }) u* _0 {. T3 ^1 F* q# F- w" r
1 N/ n8 r) g% p7 c
: @; }, B3 y1 E8 I, R# {: k1 `
复制代码 3、qrcode_vcard.php (生成电子签名)! H3 {+ c/ Z/ y: Y3 J: b
2 E/ _6 J- ?. M& }$ ?vCard格式:https://zh.wikipedia.org/wiki/VCard
% j8 a. N+ W' |' b3 j- F% A1 _0 Q( N# C. i- d% e
- 3 h7 I7 ?" v( K9 H4 ^
- * Created by PhpStorm.
" z7 V l3 d7 d4 K/ \& Q p
8 ?+ d; B' K" X1 l0 q6 F- ?- * User: user
+ ?2 L, e a4 j$ ^/ C1 E - ' G& N1 h E, u
- * Date: 2018/8/15- s2 n# N; L% A& W w' e
' A5 g* J2 }7 X: x- * Time: 23:00
/ @% q5 B( t& V0 l - & L; C: f4 ~% o& S% R1 C
- */require_once "./qrcode/phpqrcode.php";/**9 U. E( Z6 {; g5 l0 {; ?2 }, V
: Y- `" \8 U" o6 G: P- R- * 生成电子签名
- J: v1 E7 E1 Z- O
8 g0 y* b0 L( p$ a6 D! ^' q& u- * PS;使用微信扫描二维码
. h0 u6 \& [" t - " ]# e3 f! c# L: }
- */$content = 'BEGIN:VCARD' . "\n";//起始标志
" I$ V( A1 x3 P! p
9 M: t2 z' E/ F! U# f1 e- $content .= 'VERSION:2.1' . "\n";//当前版本* v# z5 w& M% b0 M+ c
, j* d. R D# t) [1 N- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
7 r$ Z% \6 X4 [+ T - 2 x6 O% g3 s+ W( ~8 ~
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
3 l0 Y2 d4 L) V: J - ; o x, ]( }1 G; V/ U
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
+ j0 Z* u" D2 h! [ - 1 U' |5 ~' U2 e+ A; T9 W( E8 a( C
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话7 G! t9 _! B& e. u3 V& j9 x7 ?
- 4 I" Q3 n) Q: g! |. l3 F# _/ g
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
7 F* L6 D8 l! c) a. V- o
; d8 T. j/ Z1 r+ Q9 v- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)% s% \' Z7 H- b& u2 ^
- $ K7 k- ]) g- n& j) Z
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话" T. D- Q" {/ K/ h# [" F: z
& c- o- W) _, s# F# L4 ^( k- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱" c& ] j. s, c9 F, I3 L! Y
- ( ?" c# ~- |% n" I; a- O
- $content .= 'URL:www.baidu.com' . "\n";//个人主页
* d) l- Q) D0 X. e+ N' o7 E+ m# a
+ T2 b9 g7 D( M+ {8 ?- $content .= 'END:VCARD' . "\n";//结束标志
$ Q% D$ g- B/ T. S6 k4 ]
, S' b1 D( T; j# }8 M- QRcode::png($content);
: V* d6 w' j/ t3 g3 |9 T
1 n) s6 L# t- s" E- D- 0 k/ T2 _+ j* D0 S1 Y7 I
复制代码 7 g* Q( L G4 @. m' @
相关文章推荐:
5 F1 S* J+ C& h+ ^# e/ v1.PHP生成微信二维码实例
! K; g) B. g/ C$ k2.php网址转换生成二维码, G( m3 j/ F$ s5 [. f5 \% p
相关视频推荐:
+ }% z p2 m5 G* i1.独孤九贱(4)_PHP视频教程
^9 F. t1 Z8 q! e3 O* _二、JQUERY生成QR CODE9 s! e3 n# Z9 u1 n1 B
源码地址:https://github.com/jeromeetienne/jquery-qrcode. N6 V+ g; R* {( x ]- c
, R. ?) L0 s! b
jquery_create.php3 |: T p% S" ~# x4 U% i( l
, V! }& q1 a) p5 ^' K! }8 q
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
- { h' a& _# w0 H) C. `; e三、PHP识别二维码: m/ x3 m; e' @5 r: X# n
1、方法一
7 _, q8 w8 X o/ P( ?% W环境需求,安装如下扩展
( D) G, v$ ^+ T! r) X- ImageMagick; S8 ?1 U0 s2 u( J( _( F& v% {
- zbar
% O8 J j. U5 C. k; v- php-zbarcode
$ O1 o. X% U2 H! u# F6 F; q, N7 X. S2 J0 A3 s
2、方法二
! [' K, O3 \9 XPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
& K$ a, U8 i8 rqrReader类:https://github.com/baagee/php_QrReader
7 R+ v# U, a! p9 w/ y
& M+ l+ \( O% R: s$ K- ; l1 U! c" w, y0 G/ c
- $qrcode = new QrReader('./test_logo.png'); //图片路径- }( Q! v" X1 t
7 ?- E( A1 X9 \- $text = $qrcode->text(); //返回识别后的文本: a# B; j, ?# u& Y8 G) m
- # X" P# O! H) I" e$ g
- echo $text;3 j: m4 m$ z9 S1 j' ?* S& c
$ f) l( C1 J5 P* t( \! k2 J- . x i3 ~7 [0 u( s/ M1 U
复制代码
( I: o, U4 O$ L链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7* ] `4 `4 T. p6 X x8 n
4 P' g5 ]3 \% E4 y1 a1 W
; X! C* @6 k/ L1 K6 C( r6 t- k
" @/ X( t; _6 H1 Z
6 g0 Y7 ^# k3 g! s
% O0 B1 J( {' q( c- d3 C6 U/ j; i7 N3 N) g
' C0 ?* m F: ?8 R# ]9 t+ I7 |0 q1 A
3 l9 p" X E& M) `# y
1 M- X1 R" Y) ~1 m2 A- m0 @
|
|