管理员
![Rank: 64](template/yeei_dream1/css/yeei//star_level3.gif) ![Rank: 64](template/yeei_dream1/css/yeei//star_level3.gif) ![Rank: 64](template/yeei_dream1/css/yeei//star_level3.gif) ![Rank: 64](template/yeei_dream1/css/yeei//star_level3.gif)
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。" i" x1 P; ?/ ]' I5 M
---------------------------------------------------------------------------------------------------" g/ d. w$ \" B* |5 B2 B
二维码的分类
, o; f. S( G3 ]9 H线性堆叠式二维码+ ^* N" D+ E: P8 F2 Q
y0 w, c* n' F
矩阵式二维码
1 E: C0 `5 Z( M+ L( A
; O1 \5 L9 ]: l. l二维码的优缺点/ M2 Z3 F( D% a% F6 ^
优点
' D# ?6 T* w1 i+ _% M. }信息容量大6 _! O. }# p. c, D( f+ K9 u
" n x9 [$ |+ { B
编码范围广" H& o' q/ y# C1 n+ i0 w" G; `
' m" E$ ]/ {& I$ r2 k容错能力强
3 @( h' E0 x* N/ `0 c1 v0 {
9 M! F; U+ Y2 N+ P译码可靠性高5 z, i3 g1 d( s( z( q V
5 i" B0 m6 N, e3 T可引入加密措施( h" x3 ]/ n2 j3 y7 a w
9 i3 H3 K' P% ^' X7 M1 m! u
成本低,易制作
. f. r8 W9 }$ _: N q2 k0 J! [* @# e; K( U2 V G5 z$ Z3 @& Z2 D
缺点! @/ Y& W+ i# g/ @3 f( O
二维码技术成为手机病毒、钓鱼网站传播的新渠道
5 z! p: m( s! w9 ^6 g( W5 S; G7 r6 N: T0 F& m0 ~
信息泄密3 X) g0 c! e6 ^! B4 t- r% r
: n& M) w) M. F& }7 V" n
目前流行的三大国际标准
) H+ ]9 A1 h% o) ^7 O- }PDF417:不支持中文; P1 w6 N/ ~9 @0 D+ D6 _
+ f- U1 q& h: F2 y2 P9 H- `DM:专利未公开,需支付专利费用
3 d3 I+ I$ z! M6 S, \. D f3 W; N0 v; e& d2 Q
QR CODE:专利公开,支持中文, b: L& b. E) W; r
' e4 h. n6 ` Q# G1 W& aQR CODE 纠错能力. X* D! G7 j* W9 T; [2 R; B
L级:约可纠错7%的数据码字
# p) a8 T0 Q( Y+ v/ ~; c& G
- P6 m2 Y2 f$ m+ p( iM级:约可纠错15%的数据码字
; k3 \6 b- S$ S! i, T R! }* b( g
Q级:约可纠错25%的数据码字
7 e' d8 e" E7 |2 j+ h4 H. U9 }: [, d
7 ~( V. ^/ \# NH级:约可纠错30%的数据码字9 U6 i- l6 N U! K
+ @; J1 L, Z* g
前提条件; {, x0 E8 g! a! d% B- u
GD库$ O) J8 N1 `7 U4 ]$ D2 s8 C& }
* I. S& \- Y4 F
一、PHP生成QR CODE( s) F6 E7 b/ S
官网:http://phpqrcode.sourceforge.net/+ [- ?! S: r% e+ u" ?9 p
7 V2 i) {( U2 A+ n2 F
下载源码:https://github.com/endroid/qr-code
, k3 L, R, ^( N3 p
1 ]6 N* E u, Q' }* c) W+ j目录结构
! x/ Z1 L: ^" _) q( v
- T( V U0 [6 H( k: ?# E5 a( W; C" m) R7 @6 ]
1、qrcode_create.php
+ p' F" |* Y) E2 _2 T% d8 mps:生成普通二维码
1 A. l% S- A, X5 F1 C
1 P% I; M$ S" ^8 W4 a7 P8 e- include_once "./qrcode/phpqrcode.php";/**
+ b3 k; v4 f& v1 u0 k - 8 p1 a: w& a# ^- m
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径) \* T: W# d# }- q& D9 E
- # ^4 E3 I( h6 f3 j) j+ Q+ ^
- * 在浏览器上直接生成一个二维码(内容为abc)
1 U9 d% P# o8 f! M - % U: }7 B6 r. C+ U# z' J+ K
- */QRcode::png("abc");0 Q3 d; N# \( h, G" W5 `/ T
: q0 v4 T, _6 i. r: h0 p- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**. `7 ]$ F5 c! ~0 }& o7 l
t0 ]0 X1 f, @- * 生成文件到本地) a6 c- p$ I) v* u8 i
$ |) S2 g: A' M- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)! X5 `3 e* i% H
- - k5 r5 b- o) I
- * PS:$saveandprint源码的p6参数做了修改
% v, J1 L. l! p! U5 l
, ~+ t: ~8 F" j6 @# u m$ O- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
- F5 J/ j5 ?9 t: O5 Y! P5 Q - @- f' q4 x3 u6 j
- + I6 T9 M/ w, y
复制代码 0 U8 H m, {* K. L
2、qrcode_logo.php
9 H# d* B6 |' ]6 g% I- V( X) Nps:生成带Logo的二维码
9 A) p4 \/ O T- /**
A; M. }8 E% J
4 d/ z/ ^& i- d- * Created by PhpStorm.( A5 H( d- [. _0 Z
- # c8 M* \6 T8 [
- * User: user
) O, T$ z2 N, U0 ^
, L% y. b% s1 `# K& h& F& B- * Date: 2018/8/16
- \3 ^) C7 L3 N. x$ W
/ ]4 X( Q( x1 e. }5 ~' O9 c( W8 o- * Time: 10:43- Q* D1 S5 }, e8 X% g
- & z: L& g- W% X: T- e; o
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";+ S$ c5 x: l0 } Y k
# ?% M1 K: F7 b# t0 b- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称! O( F7 w$ y" N
, D9 Z' z1 e# v. Q5 _- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
- C$ u! |0 S4 k# \+ Y
, y3 W& s' l5 z! ?4 o* G! X- $margin = 2;//边距
1 H/ p( X' x8 d/ ?. I& M. w
$ q6 C7 Q( H5 V ]# a- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
7 `4 T+ f5 X$ c* `+ P& }
. @2 q N: M; P) p- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
! W$ i$ ~6 |! E# L/ b0 L/ a - ; h- z5 [6 v) E8 `* s {$ O
- $QR = $picPathAndName; //已经生成的原始二维码图
/ p4 a g( ~5 c, ?
$ ]* v" m6 P2 t+ B' G/ B- Q( d8 `- $Logo = './pic/logo.png'; 9 D# c- q. U0 B* ]* X! g S* W
8 d, z3 {: U5 t$ }/ w% j. ?- $Logo_re = './pic/test_logo.png'; : l* V) J' b0 K5 ~! ^8 B
; u- M8 }$ b6 B/ n% Y, V- $QR = imagecreatefromstring(file_get_contents($QR)); 3 D. l g7 r. U& |
- + e0 n: W9 Y& J7 ^8 f0 x
- $Logo = imagecreatefromstring(file_get_contents($Logo)); & K0 g4 ^) {, H+ a1 ]8 W2 \# l# z
. X8 Y3 B3 ~: L) S7 D- $QR_width = imagesx($QR); //二维码图片宽度
2 I) O/ @+ ?; k& w% j7 r) T - ) f% J x8 i" P3 N6 M
- $QR_height = imagesy($QR); //二维码图片高度
; c7 T# m4 U$ _2 y J5 V
% L& e- \: j0 k7 r- $logo_width = imagesx($Logo); //logo图片宽度
1 r# ]+ a7 p4 j) R - + U* b3 I; S3 P0 Z) J" q) v
- $logo_height = imagesy($Logo); //logo图片高度2 K8 z* h7 @- J4 {6 @: S2 }
2 B# p* u% [$ U; @# j! S* z3 |- $logo_qr_width = $QR_width / 5; # h8 X' ?' o" F8 t' I7 ~0 `
- " e' K8 c2 |" Y4 W1 O
- $scale = $logo_width / $logo_qr_width;
+ F7 m; a: z. g1 W* {6 o - + ^5 w0 L5 {$ ^
- $logo_qr_height = $logo_height / $scale; - x$ P* a" h! t9 u* i# ~
- & g3 k* r- `4 s' s/ Y6 c/ {8 f
- $from_width = ($QR_width - $logo_qr_width) / 2;+ `2 `1 q- w% j1 ~! z% r
- + F0 x; N- Q& Q* q9 M
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); ! _& ?' v! d- U, _) l7 [
- * e, P9 @! t" I! Z6 R1 @
- //输出图片
+ B$ z7 B7 q9 Q
& v$ Z! m3 W3 ~- U1 g Z- imagepng($QR, $Logo_re);$ [6 @" b9 ~* y: w
- ; H1 u+ G- m" J( ?0 Z1 D
- }
+ E, s' @) [. o% |% E0 Y5 G6 @ - % i+ @% n0 @9 Y/ K6 S1 o! } |
; _. I; a2 A/ N
复制代码 3、qrcode_vcard.php (生成电子签名)
' S& C; g8 Z/ y+ B3 V+ l3 x* E/ H) _
5 q; [4 r; k3 V8 \+ N, qvCard格式:https://zh.wikipedia.org/wiki/VCard
: R' j# \& N3 L$ c# N3 E9 g0 ^
+ i+ P7 k& R' x! l- 5 m/ T% G( u. b9 ~8 c1 L
- * Created by PhpStorm.& w) O4 k$ B' c1 j" [
- 1 d2 S- J3 n3 @% ^
- * User: user7 a o5 ^/ N# z, ~4 ~* U1 g5 P
! A4 [7 l- Z- E9 d! v0 O- ?- * Date: 2018/8/15
2 a! j1 Q' Y: E. U7 K - + C8 G( N/ D& w) q$ j
- * Time: 23:00
% \9 y% g9 |+ e( c j
5 x' h; V$ H9 X2 h- */require_once "./qrcode/phpqrcode.php";/**
* \9 g6 v% i) D; O# ~7 E - - d3 I, e# F6 z' B' H
- * 生成电子签名1 p( {5 R# X) P/ P) N( u
- " @) k4 q- K3 p: G! r
- * PS;使用微信扫描二维码& \6 T- K/ F, Y# N% a3 E
- 1 u4 u% J n- u
- */$content = 'BEGIN:VCARD' . "\n";//起始标志. W; r/ y1 \2 K- b" A/ O# U
q8 [$ h9 w5 `$ j5 |7 U. S- $content .= 'VERSION:2.1' . "\n";//当前版本
* E; T7 C k. [ G - ! `: v( l+ {7 P
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名+ i7 N: Y7 x! z
- ) C3 q6 [' n: F) Y; B# H1 Y1 ~
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称8 J% [7 j: w+ p" t- G
- . k9 W m; c( j2 B; t, r& b+ W
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位1 \: L8 y9 e6 U% _8 v
% w* j2 S3 W+ W/ {4 ^* {7 N5 }- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
; |8 `4 }0 f; t5 W
# G7 G. {# p9 B, o! M- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
0 D" y1 y) I# R$ d$ G2 X7 m* Q! o' [ - ' u' X1 z' d! d1 u- |) [8 g5 r
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)9 w8 S) ^! z$ R
- * K! ~$ U3 p: G& ~1 B% v
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
* q. ^2 s0 {" G5 H( L- [/ T - , j" B) y E; L% y4 d
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱 g: `% l4 w, t+ e5 o$ b
7 n/ @6 F1 a! @! f A- $content .= 'URL:www.baidu.com' . "\n";//个人主页7 I) ]7 x9 e0 k8 p) X0 a2 {& O
5 p9 y# x8 C g+ ^* y/ t; M7 j g- $content .= 'END:VCARD' . "\n";//结束标志
o4 g) y* [5 W' { - 7 e3 G' g4 s/ N2 N" O
- QRcode::png($content);- R8 q+ X/ Q$ M' W* @* V$ i$ J
- % a1 ?1 i6 v }1 V
- 2 S4 u- S7 A" w$ e& y
复制代码
. @+ e; f8 ?9 V. u相关文章推荐:" ]+ P) Z/ l+ r1 i+ H1 ^. N/ u* p' r6 B
1.PHP生成微信二维码实例
0 p; I6 ]; n& S4 ?7 s( Z: r2 q/ j2.php网址转换生成二维码
9 S- A4 P: p2 c0 r! l( M相关视频推荐:
4 a l+ t' m4 r0 S: o1.独孤九贱(4)_PHP视频教程* p1 L( }& \% o: r* |5 r
二、JQUERY生成QR CODE/ j( z+ z4 f) R0 X( I3 b
源码地址:https://github.com/jeromeetienne/jquery-qrcode) Z3 l& F' u S' e/ `- Q
1 r/ }* U" y" U9 E. p, e/ j
jquery_create.php
) H9 m0 r4 D, F, @, A- h" H0 c8 P0 c) W7 u) q& t$ c! u
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
) r7 Q$ H; D1 T4 g9 {3 ]8 h5 U0 r三、PHP识别二维码
4 k- o1 X; A* l3 e. s1、方法一! p+ V2 G- J. q2 f
环境需求,安装如下扩展
" `1 l8 {( \! m. k* o! G1 Y- ImageMagick
& k9 @& w9 X7 m. ? M* j- zbar U5 C& z1 l, l: v1 |2 @
- php-zbarcode, x8 M6 X( w) v1 A5 D( E$ ]
3 D6 Z5 }1 |# ?' {2 b5 t5 `
2、方法二
b4 F. u- U) y/ Q5 V# S( xPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以+ i2 @6 c9 P' M
qrReader类:https://github.com/baagee/php_QrReader
* Y/ r6 T9 R9 }* Q2 f$ ~4 H: \/ O/ i" I3 {
- * b6 v( m: _0 K
- $qrcode = new QrReader('./test_logo.png'); //图片路径
, [% e5 r' t8 R& A" y
6 Z: T. H3 ~& D, u8 j; }. D- $text = $qrcode->text(); //返回识别后的文本
. t' n- _; @8 _5 h
" P/ G1 A. o+ X3 I S. E( Y0 y- echo $text;. v* P3 h. Y8 B4 y
' g! T# X' R+ ^. R
, F; W- p" A1 O9 c/ s: X6 \
复制代码 9 a4 y s' T% a. A# y c
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7: U3 M8 B& A/ T8 v {$ c* l0 y! k
6 L \, i! |! \( t: i4 G
) v' j( s) ~4 q" z9 p, `
2 T" i7 h3 w8 z& s
# H4 O# F% f9 u! {# ^. ?; x) P. \( k1 a2 |! a$ k# v9 P
6 J( l6 W6 K3 y, A6 x s
% H% u6 Z( G; D6 X C! ~4 f( g6 e% l% b9 r/ R' n6 Q. G' Z
- y' R- o4 K. ^$ ?$ s3 E/ `/ r& c |
|