管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
% U1 l% P; ~. [---------------------------------------------------------------------------------------------------
4 t; s, R9 l0 j+ j; A二维码的分类1 ?5 w9 ^' C: \( C
线性堆叠式二维码
, F2 W& |- [" o% i+ I% o; J9 e( b: O# A. I. ?+ W3 F
矩阵式二维码
1 g' h Z2 G3 ^8 k
& i# [! x" A( \- R1 T- n: g二维码的优缺点( E( y' o2 h2 `: ^7 o/ m" U
优点
9 p0 `& h2 _) y信息容量大( i' r6 K* R. r2 Y5 c3 ?5 k: }
( M+ G G3 ^$ Z+ |编码范围广
7 b7 d$ K9 S( Y- u+ ?6 o5 H) e. v# c. d
容错能力强5 K0 j( H' ?& t: j7 S3 J" B9 s
6 F" d% E$ h/ W
译码可靠性高
1 h3 v* {# L- i# {5 Y, f( u p- r
可引入加密措施
$ j, ^7 S/ z" h
- Q4 j* u; d- Y% W- _! p% k成本低,易制作
% c! Y9 k2 ^# F
3 f2 x& s3 ?* H0 N+ B) P) k5 K9 y缺点% M- v+ r% o0 y9 v" F1 w$ K. e
二维码技术成为手机病毒、钓鱼网站传播的新渠道
- m" W- @# s2 z) b# B6 v& [1 m* d$ o1 D
信息泄密0 u* x& J* Q- e0 j9 F8 i
& H8 k7 E* F1 \6 V' b' V
目前流行的三大国际标准) ^' w" f5 J, g/ p8 T# V! V3 F
PDF417:不支持中文
* } W0 D0 y6 s* c0 d
6 m; d# V5 [# I3 n% g4 GDM:专利未公开,需支付专利费用/ I1 W* H2 e$ R: w; F
( e* Q9 A: T& V5 Y1 F- ?
QR CODE:专利公开,支持中文' F8 [( {& ]" x5 y0 g) }# X& \
: Y6 r. U' ]# O: s) r
QR CODE 纠错能力0 R2 N. |; O9 Q* H
L级:约可纠错7%的数据码字7 a; X8 p$ J" b$ E2 ~1 f: V! n
. y* a$ b4 u" m* E0 Z) S) F
M级:约可纠错15%的数据码字( |5 y/ h9 ] n0 m3 G2 L' J) H1 ^
* M' `' R7 l8 jQ级:约可纠错25%的数据码字
& S- G3 r3 w6 S; W, a& I* t; x& J! x- Y0 [3 \4 B4 W7 p2 n% a
H级:约可纠错30%的数据码字
' ^) @% e* z' L1 K+ R7 _
3 |5 t0 g3 Y$ l前提条件- c( b5 A; W" w0 G! d# u
GD库0 a" K- l* n4 C) }; Y. c3 Q& v; A
) [* }6 [3 z" Z# ?" E/ [
一、PHP生成QR CODE6 W% a# ]4 a3 H, Z: j
官网:http://phpqrcode.sourceforge.net/
% ~3 [* R! M. T
/ X! K# H/ V! ~2 H; p: |) c$ h下载源码:https://github.com/endroid/qr-code
2 o$ y% T! ~) o4 o6 _6 i- X$ C
9 v) l0 `; @5 l8 w目录结构 I: c$ b& ]! T" Y# E) q8 R' {7 ?
6 L+ d" ^& `9 B0 K( ]9 M) ~# o! Z! T6 K `0 d7 g" {( _" k
1、qrcode_create.php
7 T" {3 z6 T% a& Q6 n) bps:生成普通二维码
- r: m+ u& l. @( g- 0 W7 R# @4 m5 z! a/ R. O8 u& E$ y& Y5 `
- include_once "./qrcode/phpqrcode.php";/**. z7 \7 I& u5 z
+ b8 }! ~5 o9 N0 R- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径; J! A# H* G# V! r M
- : M0 F" P) X: |* {7 g1 J6 X: v
- * 在浏览器上直接生成一个二维码(内容为abc)
5 o q% O3 ~& W$ ~ - ' m. d; W8 c9 D2 u$ ]; M$ A& w
- */QRcode::png("abc");" T9 `' `% j! I" t. N4 Q8 ^
- 5 j2 e* p' ~& I' E* ?/ @
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
/ _1 }% n) r) o1 ]" p/ U - ; k5 s7 t& c' X( B# x
- * 生成文件到本地
7 R6 I8 y/ W, C$ P9 p5 t' ` - 3 }- \2 Z* h/ D. G
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
' t- B9 m7 L, O3 ^# b
- C* {- i' G" Q- * PS:$saveandprint源码的p6参数做了修改
; v' ^) c" Q$ B1 n& e5 J - 4 H( y% ?* R1 ^! b+ M
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);/ K/ X9 W n' T g* |- }2 t4 S
+ Y: B H* W+ Q$ f1 _& i4 z
( W0 j" m* d! [( o
复制代码
6 p4 e% N e. Q7 f! U2、qrcode_logo.php0 W" O! v3 p- v0 o! w# ]
ps:生成带Logo的二维码- 2 J2 _, n# o0 l% ?) B6 x" x
- /**" V1 v, a- h0 h* M4 V
- . ~- K, k( _0 B) V+ u5 [
- * Created by PhpStorm." R3 b/ k1 V5 z" A; I9 ?; N
- 5 p# I6 y& C" ?# q8 P$ V3 `
- * User: user3 l0 Y0 G! y) Q' E5 A
2 {$ I1 ^3 c$ Y/ j- * Date: 2018/8/16
* j! i* A" G; X" k/ } - : T7 q6 r9 K3 ?9 q% l- @
- * Time: 10:43, y" V m4 k; n% Z
- v! Q8 P, E5 t- */include "./qrcode/phpqrcode.php";$txt = "测试内容";
6 X: E+ y4 o4 w7 T4 C
1 S: O; _6 F: K% ?/ Q" q% z. p6 p- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
5 t$ C3 |% ~! x5 E8 N# F; g - T0 t: Y+ D7 y; G2 h
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是+ v) g5 j4 l- h4 W5 U
3 | C, K9 n) @7 E( ~0 t- $margin = 2;//边距! S( v! m! y7 l/ [7 V% s
- / b/ E2 c0 w( X$ ]
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片& f/ n' q! _9 E' U
# A+ J) |/ Y8 n5 I- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
: r5 T# p7 k6 T" o3 H% q9 w - ' R! ^4 E! f: D
- $QR = $picPathAndName; //已经生成的原始二维码图7 d) j5 {( Z D4 c8 w
; c* c, b, `( }- ]- $Logo = './pic/logo.png';
. r ]5 ?+ n" P. m5 r9 O) T
( X* M2 o; k" Y( b! k% Z8 F- $Logo_re = './pic/test_logo.png';
. k+ |: k$ F! U" O
( I$ }% [: {$ \$ K( i# I# a- $QR = imagecreatefromstring(file_get_contents($QR)); ; B. h% _/ M+ h- t, s
: N5 p, E7 n/ {! q) q+ t- $Logo = imagecreatefromstring(file_get_contents($Logo)); 3 O9 r- S/ N4 I9 |; \
- q$ W0 t( P. z7 n4 p! Z2 s4 Q, t5 ?
- $QR_width = imagesx($QR); //二维码图片宽度 l4 W5 r- `+ s3 r0 y1 }- b: r$ P9 f' B
- 5 m1 q7 E9 u: b) f# ]
- $QR_height = imagesy($QR); //二维码图片高度
# |/ ]$ [2 R/ R) @ - 8 S7 ]' T9 t l7 ^$ d1 P
- $logo_width = imagesx($Logo); //logo图片宽度" B3 Y% [7 h5 N8 s
! O' E3 [ C% `- $logo_height = imagesy($Logo); //logo图片高度' q e' y% \3 h# X- r- N9 }
- 6 D1 a; v8 S' |1 L3 A2 u. R
- $logo_qr_width = $QR_width / 5;
; u1 S( b4 z: B* o - 7 K# i, |$ ]! C( `7 N P
- $scale = $logo_width / $logo_qr_width;
8 v) h& n5 f! {) Q; o1 ~
' r, W0 b: ^5 K n: T! p5 m1 T. `# G- $logo_qr_height = $logo_height / $scale;
) S; R- N( ?( W - % z7 w% _ H, p$ ]0 t1 [9 F: x2 G
- $from_width = ($QR_width - $logo_qr_width) / 2;
* f; s' [; f: T1 a
3 J9 I7 r$ n$ Y/ l! Q- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
7 M3 c# ]6 S; X: L- ]
1 S7 I7 j V# O4 n/ g( V$ a- //输出图片
" ^1 ]4 q3 d* n. k2 |2 } - 2 {# l- \7 s7 B3 b: |3 x
- imagepng($QR, $Logo_re);3 G! U4 k" _9 Q7 ~
- 4 q! X7 w" i I
- }( R. _4 q. O6 B( c0 M4 o2 a
1 X, I, B" \5 r/ ~% R% N
1 i! v1 G7 C- x. e, f4 J
复制代码 3、qrcode_vcard.php (生成电子签名)
8 U, c c$ t2 p/ S) c+ r
' ~2 b0 q# X9 k4 A; nvCard格式:https://zh.wikipedia.org/wiki/VCard
b- T0 `8 q8 A6 l# ~/ K% F) W9 T8 f/ ~& a: E/ R( E3 n
- 6 j0 A3 h' o% m: k; s
- * Created by PhpStorm.3 v, k5 P( C% W. o# }
6 G& p l" \5 U- * User: user9 i/ }& `# l* z- Z9 ]
: I2 H& M* V! R' t1 l4 W* k- * Date: 2018/8/15; C, B9 H' w5 ~
8 @4 y) v( `- `- p- * Time: 23:00
$ V3 I( e: a' Y( y- ?
Y/ I& f- o( T( S0 G& l% v( I- */require_once "./qrcode/phpqrcode.php";/**7 L$ p; A. S o% l+ k
- " z* c% i+ ~. N" W
- * 生成电子签名- l: v6 g: t* K! w9 ~& t# ^
/ P0 G' S, O! f: l( ?- * PS;使用微信扫描二维码# l& d1 e+ Q: f. p* N4 q
0 W6 v) N. V1 d. Z! t. v- */$content = 'BEGIN:VCARD' . "\n";//起始标志6 {0 K2 D7 ]1 R( X* n% R1 @
- 4 y0 x# b7 p; S0 @( ~0 M1 C# E
- $content .= 'VERSION:2.1' . "\n";//当前版本
1 a0 X0 |' I! N7 T. k
6 R3 g: }; \" }- ?9 b- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名4 C' @. \9 G& t' c$ z6 P3 P# \
4 X: ]5 I- }8 _7 x% Q* T8 G- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
0 G1 Q) [* o9 l9 o) X, d
1 V$ b" q: c. K O- $content .= 'TITLE:PHP研发程序员' . "\n";//职位, ~. _7 @" p" X9 P
0 S( E7 x/ |$ D" s6 @- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话- g/ D" w; `+ @$ u( ~5 Q- A" k
; [* w! J1 n6 ?( F Y/ r5 T- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址% c# k9 A- }+ C* H) Z8 `
- ; O% @2 k% N+ d4 R( b, \
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
4 h# s# i+ b( ^/ W" W
+ F. y' ?! R3 \( i. S- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话! s+ S& ^! P2 b: H6 ?, o0 O( p
- ) k! M, R) M5 o9 o8 y* \
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
' Q( }& T, N4 n/ h+ f - , V% R* I/ Y. A' w$ f5 O, _' J
- $content .= 'URL:www.baidu.com' . "\n";//个人主页
4 A9 G& R, @' T/ L% T3 c; M - 4 M6 h- v9 U) ^
- $content .= 'END:VCARD' . "\n";//结束标志2 f: [; @2 V6 w; y- o9 U" q
1 Q. F& B% H; S) Z8 c% a- QRcode::png($content);
2 Z3 ^& X! I2 u8 X( A; b - 6 W' c" G' f+ ~3 g) ?" T. e3 e
- ! e# B% p7 o% L4 C! H, o( A( A
复制代码 5 @: u" V8 p% a8 a: W4 c
相关文章推荐:5 H% R& b8 c0 {& j
1.PHP生成微信二维码实例# y7 M5 A v5 H
2.php网址转换生成二维码
* _( b" Y4 A9 f1 Q相关视频推荐:
. ]+ P' L+ x+ u1.独孤九贱(4)_PHP视频教程$ U& f& U" ^( H6 w
二、JQUERY生成QR CODE
t' _ o0 o" O" g6 i9 t源码地址:https://github.com/jeromeetienne/jquery-qrcode
+ N6 \( ^$ m: B/ M2 \/ g2 B; v
! ~' \& ]2 d5 f P2 ?. Ajquery_create.php
; U5 K+ j; ], w5 N/ z
4 |0 j% u2 P ~- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
e+ C) c4 [7 {/ p6 W2 M三、PHP识别二维码
# l5 s) I5 S5 {$ b" E$ q8 f1、方法一# j2 U B$ z7 O5 m- g l
环境需求,安装如下扩展
8 u) \. `* z* {- ImageMagick
# L: s0 j7 }4 W- zbar: _' T4 L" L# D1 [
- php-zbarcode
6 I, f7 X1 I' x
# X- v3 n! ?5 K" k2、方法二0 m2 p0 c2 A8 b' z# D: K
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以: ^; M( O8 H* j, s
qrReader类:https://github.com/baagee/php_QrReader
8 {# L; R" ?6 W; K* x0 R4 y% |% f3 ~4 u- Y- Z$ y
" G' D1 ]6 m) v9 s- $qrcode = new QrReader('./test_logo.png'); //图片路径
, I+ \: e( Y8 a5 }
1 O% r3 l# ] t- d& d+ r! x- $text = $qrcode->text(); //返回识别后的文本
& P% @$ @2 b d1 t; ]8 T. W* p. C$ B - - ~, p5 a3 W5 N/ R
- echo $text;4 V% v: O1 x4 q* l. O9 j7 ^# A% l
- 8 a. X2 O- ?" ]' ?& i! z9 `6 J
! B# [: N0 Z0 Q! Z1 n
复制代码 9 y. \5 V6 t& a0 y
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
6 a! R5 ~- A: [* o% f
9 k- U% `" ~% k2 r/ s' {. _/ z" b h$ l5 c' I4 J1 t
: I' d4 a' P. G3 `
; b! h! x9 {$ i& h. l9 ?. U! R1 U0 k
2 @: {& O# V8 t, c, f' T5 q- S1 M8 [" m" z
7 M: m3 i0 B# D9 j7 K5 o- k9 W
* r8 e, V# E8 {2 J
5 x8 W1 ~7 [$ q [2 e |
|