本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。* {! R0 o% p/ H/ Z1 K% B' }
---------------------------------------------------------------------------------------------------
/ T$ n4 P; T# O) `5 n5 C: W二维码的分类
. c' Y: z* L- A3 l8 a1 I线性堆叠式二维码9 z b& ~, W8 U9 q4 ~1 @% G
! r4 O5 x7 \3 x$ Z矩阵式二维码
- o; l6 }% e/ [; x" ]& n; L6 W& R5 V
二维码的优缺点4 ~, \6 K; d3 _* N+ m @
优点 A3 |+ v- z6 _
信息容量大
3 q- ~' {& \" k' P+ D% `/ h
9 _) l# g& g6 N) e5 [/ T! a* f8 L" g; o编码范围广9 D6 I1 ^0 O# t; t: v
: m, P! Q! Y* w' x$ g
容错能力强
) a0 T2 H! x) r: q5 P" d) T- a9 `. x+ n* R* J& f0 I0 a& g4 e
译码可靠性高
) Q/ v; D+ F8 t! I
5 Y! ~/ m o% x& T, D W, p. s% k5 ^7 O可引入加密措施
- K+ F" M3 ^- g/ Z- n
# f9 B: S' I" G: v; R* ]! e成本低,易制作" e0 r2 n7 t& m, @* z0 E
! O4 ?$ j+ k/ b, q缺点) u3 a. a0 a g
二维码技术成为手机病毒、钓鱼网站传播的新渠道
: Y1 B4 R' E2 e. n
8 r9 C+ k# r, B: [9 |信息泄密. [: W: ~! I0 f$ N ? i
* S0 a E2 J' k& e' A4 C) I
目前流行的三大国际标准9 h9 a( k1 q2 x2 P7 _
PDF417:不支持中文6 Q x+ d+ Y6 p) e
1 |( i$ M6 {: E5 H- V. n8 i
DM:专利未公开,需支付专利费用; f+ Q9 x5 s( R, \' G3 T: R
% V c" R7 c: b+ d# A7 c0 y
QR CODE:专利公开,支持中文5 S6 q! M5 k& D, A5 p$ V1 B+ }
$ ?1 y4 a2 `/ P E3 c5 N
QR CODE 纠错能力
% f+ u5 ?2 G# G2 b; Q' u' d/ fL级:约可纠错7%的数据码字
# A7 T. }$ h; A2 ?" ]3 y
+ z$ }7 P _0 @M级:约可纠错15%的数据码字9 {- a7 o3 z( O4 K2 f, Q4 h. P: Z4 N: Y
5 e% w+ ?) @4 L: s3 \0 E- @9 @Q级:约可纠错25%的数据码字0 }! t9 u# ?) n( w
8 \! m( v' ^3 b( B
H级:约可纠错30%的数据码字3 u2 Q. @; {' v" R3 c' d, ?) P
6 e, N; [2 N9 N+ @8 l$ P0 F前提条件/ l5 E* C; F3 O( Q
GD库- ^, l% m4 b$ g* G4 M! c' s
) [5 y" q5 X( ]0 o }/ f0 Y一、PHP生成QR CODE
- X2 |8 Q0 c! |% ^& k9 m5 N7 M3 R官网:http://phpqrcode.sourceforge.net/4 X, S& n" V+ l4 y' Z3 f9 W
F1 K1 n* @) F: l) u$ ?0 G" i9 r
下载源码:https://github.com/endroid/qr-code
3 S/ p5 \0 E5 k/ _9 e8 ?2 S
; @& v# j7 K1 L& Z! d+ r目录结构7 J) o! l U6 i2 Y; Q7 U; w
9 k, u* r9 r0 L
( d. W% _7 Q8 h9 A1 M: {1、qrcode_create.php3 ?( P/ b, N O0 K# E4 K0 Y8 G
ps:生成普通二维码
, W: U/ n/ ?8 |/ B/ w; X( v$ g) M# R
( y5 E' d4 V: |$ |( a- include_once "./qrcode/phpqrcode.php";/**
1 o5 Q5 b! I3 h - 2 @1 N$ s4 I/ l7 L- j
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径, n2 H ~+ R4 m& d' [7 R. c! ~6 n
4 t' t7 G! y( q, w3 A- * 在浏览器上直接生成一个二维码(内容为abc)( J4 x( ^; q8 }% v A$ C
. v# C# P+ N- T- */QRcode::png("abc");
- O; y& {, E9 @4 t) I( c( s
, t' {4 w$ V* ]6 G2 G; G6 ^6 I7 n- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
- c) |. A' e' m: B- Z2 [4 V
3 ^2 n) n8 p# ~9 s- * 生成文件到本地
1 L+ w. Q0 [) t
- U4 Y$ o4 a- ]- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)+ d& `+ }! W: U; u1 W
- . @/ s5 s3 E2 r5 {
- * PS:$saveandprint源码的p6参数做了修改
" j3 o- ` r! T6 o+ c+ U, z
1 b5 M) ^# s; M+ N& ?0 ^; _( ~- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);7 p& Y- k# G2 d; N# B9 t4 K
: o- Z6 @. L( i& ]- T- " D- D- _) y+ L; [# X
复制代码 1 H' q) b8 v0 C' _; G5 q8 x
2、qrcode_logo.php
1 { {' J( G4 ^/ u$ V3 v; y/ Tps:生成带Logo的二维码- & c) }. `- ?- }' D# B
- /**
- I- F4 V) S# u% z
% b" x" H( E+ o Z. U$ p6 k8 h- * Created by PhpStorm.4 ]* N' t" c6 b$ {7 ]8 N7 \
- ; [3 p; N6 [2 H) s5 o8 O
- * User: user9 |" T7 v3 Q) t: p. R
0 h, k% C0 r( ?& s& j- * Date: 2018/8/16. r$ v. N- }9 ~( w) ~9 x1 T
- 7 P4 G3 t: h& q1 {7 T# J4 @
- * Time: 10:43) @: b3 S5 N. {5 y, j2 U+ D
5 i3 P" ?6 G& E7 `- */include "./qrcode/phpqrcode.php";$txt = "测试内容";6 z' {3 s; T h
# i5 |/ {+ b- E' s7 l% L: a- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称, W5 z; A( y! ?4 |& L5 y
- : s4 P t; f6 E0 l
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是. ^* _9 f6 Y3 q/ ]: j6 @! W! M
5 K% S1 k7 v- d) f- $margin = 2;//边距
9 P- s E. e/ L
3 g' y) r8 Z H3 K n+ v- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片* ~- z! O8 q# [; x
7 `& X4 h9 a) t: Z" l7 L K N- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ : B$ I1 X. U- C
4 \2 @+ ]1 P* w! y5 @- $QR = $picPathAndName; //已经生成的原始二维码图
+ ~2 l& s4 k5 e9 ^. A - O! F( [$ I; z, i
- $Logo = './pic/logo.png';
. }' y# i4 |7 g4 d& Q - + @! V' d. a+ c1 x3 b; G
- $Logo_re = './pic/test_logo.png'; % E( c9 X3 D7 |
- , c5 @/ p( @6 G# k# L& E
- $QR = imagecreatefromstring(file_get_contents($QR)); - ?9 C9 N( H2 @6 g8 n5 @. [' @3 F
- 8 p! Y. v+ Z1 `, e& A
- $Logo = imagecreatefromstring(file_get_contents($Logo));
Z5 n/ @, e( M# Q, n' o( k% e: ]
2 ]( {# t+ v" q9 f/ Z, Y- $QR_width = imagesx($QR); //二维码图片宽度
' t% m' Y; K3 k" q# @8 {
# p' g4 r/ ~- u& r. M" o- $QR_height = imagesy($QR); //二维码图片高度
3 @+ d$ }2 \9 \; x
% n' e4 T$ U8 ]9 z- $logo_width = imagesx($Logo); //logo图片宽度) Y+ A6 D) h- Y- W* B( c1 h
- ! g/ T7 w3 R0 ?2 ?7 B& ~
- $logo_height = imagesy($Logo); //logo图片高度; K4 ^% o4 L5 J y ^- A
; g5 b/ _1 I+ d- $logo_qr_width = $QR_width / 5;
- ?5 h! h- a9 j7 ?* ` - * Y* D2 j) M0 f/ D
- $scale = $logo_width / $logo_qr_width; ! M' d7 N( W$ d: d
- $ T" \' q! N9 \
- $logo_qr_height = $logo_height / $scale;
; A4 l4 m9 S- s( f5 j/ y
- u# { {- ~- S0 b- $from_width = ($QR_width - $logo_qr_width) / 2;
' q4 d% W1 B; U+ V D2 J - # A7 d6 R) t3 y- `* W
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); ( [. T- @* Q& g1 T+ {# @
- , |1 e$ Q9 q. B* J. V
- //输出图片
2 i" B- I; m0 d1 a) [
, @' b& D, Z6 q: s- imagepng($QR, $Logo_re);
) L! w# U: S$ n6 l) c2 {, n
1 i3 e# B8 h) n# ^6 H- }
6 }$ f4 s; k3 n
0 ~/ h9 v* p* M- W z- % W! d3 A! }* O+ }- B
复制代码 3、qrcode_vcard.php (生成电子签名)( U. u9 o% B( ?$ G7 c
$ g( b5 n6 o2 A: LvCard格式:https://zh.wikipedia.org/wiki/VCard
& Y" B8 ~" q6 t7 ^5 s* u0 ?7 G* ?0 l- z3 C, |4 I
- 2 V$ i P+ |3 d4 O0 X
- * Created by PhpStorm.
; I% F6 X% Q0 { - 9 S" b0 ?( Q, g4 z( a! G( D- R# F0 v7 ~
- * User: user& e4 n* d$ U6 G1 R- v
- 9 P$ T: h+ l. N: q7 T( @
- * Date: 2018/8/152 \0 M& i A; A# l" _2 o" w) P
- : l9 Q( r8 u2 c/ w, ?$ I, k
- * Time: 23:00
' i; A2 K& ?/ F1 f- a& n - 3 y) Q7 T n- B
- */require_once "./qrcode/phpqrcode.php";/**% j$ v; L7 K6 P9 D
- $ p2 q9 c) t" }& p, R
- * 生成电子签名8 X4 C8 x' f/ c7 s) n* G
- . S/ ~- x1 h0 t( `+ C
- * PS;使用微信扫描二维码2 S9 E& I4 H, Z& o
! x! ~: M9 ~1 {$ [2 D. F$ _9 L- */$content = 'BEGIN:VCARD' . "\n";//起始标志
+ r# B* R2 S- J& y
1 W) r5 B8 b) ]3 M* V- $content .= 'VERSION:2.1' . "\n";//当前版本& U5 `' A5 W1 v: m0 K% k9 D7 I7 j
- 3 S& [# Y# c) o& w# T
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名/ Z2 m/ b8 N, |- ~# k* o# x/ ]# Z
- * P* ?# g$ o- e( X# J+ X4 s
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称9 n% {9 V- A5 u( Q7 q: a9 }# _
- 6 p. G5 b3 C0 B. d; _6 _+ ?/ E% d
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
. U8 T4 `! Z1 [% n% ^& K
9 M+ J2 B K, { t6 O- L A8 Z5 h- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话' q5 v+ k5 `1 F/ l4 l
- + F' @) N. R5 t W5 p0 e
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址. |0 s1 r0 V- R
+ j7 }! ?6 l. X3 U- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
1 D8 Z/ r9 z7 e L
k* l" V i" R: k! G' H- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
8 Z- x) S" {5 o3 O$ `; L
% p" E* N# ?: g) i: l& Q2 c; }; `- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
$ M. c1 j- c' }: z - 6 y6 ?+ y$ a8 L6 L. ?& l# ]3 T
- $content .= 'URL:www.baidu.com' . "\n";//个人主页; w+ U" r3 P+ _% F2 _0 `$ f
. }! |% w% q. t0 {, `. W- $content .= 'END:VCARD' . "\n";//结束标志
( t# _0 P7 }6 Z0 g$ u
: L8 N% n: {+ L. l3 z: Y- QRcode::png($content); t. E3 G/ T" K9 E
- % `# u+ Z1 a1 a) V" w- e6 }
- 8 l: m7 ]1 l8 q1 e& X( z: l: O/ F
复制代码
# C# h2 k3 [4 b5 x, ~7 I相关文章推荐: `; r: g4 f5 b% ~3 n1 B3 N% V
1.PHP生成微信二维码实例! S) \0 E; J5 w4 N. h e X& }" {
2.php网址转换生成二维码6 M& l, l! Y: l
相关视频推荐:
' g$ f# {9 ?& J/ Q5 X$ l6 n' y1.独孤九贱(4)_PHP视频教程
4 h* m4 q' s7 `) O, J9 z二、JQUERY生成QR CODE
. O, N& @" N# a; a$ D7 l源码地址:https://github.com/jeromeetienne/jquery-qrcode
. C- z8 {/ N3 g+ j2 ~
$ s$ g3 u) @+ f+ r/ Fjquery_create.php: C+ I Q* J; c- H1 G! O8 m
I7 G! `8 N9 {$ x3 d* c6 x
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
7 S( X( `) T7 Q9 M6 N3 C7 x三、PHP识别二维码. z/ ~! `: `6 g) Q, `
1、方法一
7 O" ?4 `/ y: e8 x9 @环境需求,安装如下扩展
7 K# q0 B' j! ^# Q$ U9 l7 D5 Z- ImageMagick
% E" `6 K& R D1 O/ D- zbar5 U- Y& f6 v, L0 s7 a' d! ?
- php-zbarcode/ F/ Y$ t3 K: f0 k) ^8 | S* l2 q
# y/ q- l9 E# \/ S' M* M# M
2、方法二7 q* d2 J0 J0 S& d2 k
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
4 u: s/ i. S/ ?) x( W7 @, X6 u2 lqrReader类:https://github.com/baagee/php_QrReader
# ^4 B9 e# p5 [$ @4 L( o. {9 n- G- ^) a) b+ E9 d
F! L$ e4 V% V5 U- $qrcode = new QrReader('./test_logo.png'); //图片路径
\+ s9 a7 t% G* x( l - 0 n7 T* ?/ @3 P7 a4 ?6 o: n$ i
- $text = $qrcode->text(); //返回识别后的文本
x" i e3 U+ O$ p+ w3 [- T* d
/ H% ?5 c! u( N. G% z2 [' f- echo $text;4 s& t/ u6 x0 D( {* g; x/ M0 F
- # I' `1 f8 P, F+ j
- * L, w I' L- u) i2 R/ _; d( i, w; F
复制代码
2 M5 \ s& m/ G) [' E' _( C4 s- d链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y74 n" t& U M. \2 H; ?* X- G& F8 P
+ |1 h" _+ ~, e5 B8 D
3 L5 `; i8 \& V7 S
% Q; L; f; n2 a+ ?$ u% }8 @! w) x2 q/ Q) U' k; X" ]7 n
9 B; Q% L5 v" f! c, @
J. g1 D2 f5 [( U% D8 C8 k. j0 S/ o; v* {$ X ~% I- g% c
8 N! L/ P. Y& h4 S- F: j# Q6 X0 K- Q+ T3 R. ~, P* \$ M' |
|
|