管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
, R& k0 B. l- ]6 _7 P+ P---------------------------------------------------------------------------------------------------9 D, Q9 V6 z1 L3 ^ m& k
二维码的分类& r' @: J% ?7 s
线性堆叠式二维码( g5 t: T1 F% Z1 K1 ]4 S: y" D
# z |% G' T* f/ j; [
矩阵式二维码
7 `: r; D w t6 C% i! }) R8 M& ]4 j8 x; c( Z) S% ^- u+ \! C- L. U
二维码的优缺点0 D( g. q& @' a5 b) r o
优点( E- w9 V4 q8 A* L
信息容量大! V) c) h8 X8 h8 L. s# j8 b$ d
1 [2 A+ Z, a/ H5 T) U+ x
编码范围广
$ R# @" c! B+ Z Q6 f* O3 v1 y
& K4 b' ?! ^# W+ E2 V" I容错能力强
. i8 w9 W9 ~8 }$ r+ B# A) }6 t: N; A5 i8 S0 G a, G) l, |7 [3 ?! n l
译码可靠性高
4 `2 @' \5 o5 b. K( {* }0 l% A0 {1 w" ]) x6 t
可引入加密措施
2 T4 m% k& R2 U
, v& E& y. |! E成本低,易制作
# ?5 s! U: _. n( x, M A# [9 c( f! k5 T; D9 L- e8 }6 {$ [
缺点5 n/ s8 ]. G4 m2 V/ t0 k$ N
二维码技术成为手机病毒、钓鱼网站传播的新渠道1 }4 x2 D- L9 x- C/ u0 N0 J# D
! _! c. t+ _3 m# s. p9 y( e
信息泄密
u8 p) M) A7 N/ S% `7 q( t1 p, f4 s3 F! B
目前流行的三大国际标准
; D! Y4 ^/ q9 a) R1 \ |PDF417:不支持中文
3 r4 |6 \ z" `2 r, {2 ~0 [; p
8 _8 F% h5 R' RDM:专利未公开,需支付专利费用
1 D1 [+ M7 z2 R' K2 c5 x, M' T9 o4 C; l
QR CODE:专利公开,支持中文0 Q! s2 }( ~6 n# K
) `; {+ X. g( ]7 i- K
QR CODE 纠错能力# O( k/ @: |* h7 r/ N6 V
L级:约可纠错7%的数据码字
/ M9 {+ ?. [& f4 ]: z* K, t/ q
0 C. @7 m+ Q' @6 ]M级:约可纠错15%的数据码字
0 f3 B1 ~2 Z" j3 k5 i r( W
% K7 \; V5 l8 cQ级:约可纠错25%的数据码字+ j( W! N$ t+ K' m. ]/ r
" w0 j3 o& }3 F& d$ i+ i+ t) c
H级:约可纠错30%的数据码字4 a8 k/ N' ?( @$ T" o
8 e& D& u8 M6 P5 p$ A9 ]
前提条件
. [. i- k) h# { Y0 P7 k+ l6 w2 O" \4 z3 ~GD库
; l$ G8 s+ }$ S; O2 Q6 D9 d" X
3 n* X0 I+ D/ n1 X一、PHP生成QR CODE R, ^: ^1 p G
官网:http://phpqrcode.sourceforge.net/3 k3 x2 @$ S. ]& C& s
% d4 Z _) k1 Y9 A* ~
下载源码:https://github.com/endroid/qr-code
9 y' S- R; |" o: H3 {% a; _7 p9 ]; E. E) ~
目录结构, I2 D& m6 d1 T2 M0 f. U
0 f" X: Q; x% R" A: r" v" T2 V- ~$ [
; C( e% c' u" h1、qrcode_create.php
% I. m% |5 v. gps:生成普通二维码 z4 O* `. f2 ]# V7 P
- % f2 D- Q# V c, c4 y% p0 K
- include_once "./qrcode/phpqrcode.php";/**
a7 _$ F9 t6 B7 F - 0 z, K- w) j- ~" q, z
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径5 T! x" Z: E# N; {7 E
- 9 @4 L) d% u2 G4 x) S
- * 在浏览器上直接生成一个二维码(内容为abc)
- H+ C! T! p( ~5 j* |# ^% k! ^3 F
, c C6 \4 n9 P# U- */QRcode::png("abc");' w; E2 U' z4 ~' l7 ]4 i: t7 B- P
2 J) N1 [* B' N" C5 A% F- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
$ t4 D! i4 M8 d* t1 z, y2 r' q
' R- o: ?/ b, J/ `- * 生成文件到本地
" _- S, o' P5 [3 M- V5 c& ^ - 2 [- @! k1 j+ [9 p4 x* x1 J
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)) `8 {' h; e" [% q2 Q
- % T' n8 M! d5 n7 i5 l
- * PS:$saveandprint源码的p6参数做了修改4 g2 i9 K5 h# e7 H/ _; Q
- 0 W* F( k; f B" O. m0 n
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);! J- ]9 J+ B! C9 F# A& @
- ( Z5 T9 Q# t9 m# P5 Z" ?
2 `7 s, Z& c2 O) y& [- b1 ?
复制代码
/ M! b! R9 U& s% @2、qrcode_logo.php) E, f9 I- x3 @ T
ps:生成带Logo的二维码- 6 t, ?6 }- l; A4 b' X0 \# i# s
- /**
1 g8 E5 V5 T/ i# L) Q. M" ~' J - + P0 c$ u" {; m5 P
- * Created by PhpStorm.
+ ` |" u! D+ s% T! |7 e
7 F/ A" s- m! i) i0 H& |- * User: user
" H9 M o) C% \0 {: u+ b5 K+ z# l; N
$ r/ p9 A( B0 ^ V. l- * Date: 2018/8/16, P* B* y) ^. ]& H1 [& _( a/ d
2 w! {: J3 w* x: T' C* O- * Time: 10:43
M. F/ D! z- R. @ - ]8 j. j8 T& w7 a
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";8 u/ P7 {6 H- @5 U& i7 o
- / N/ T+ E+ o' t4 @
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
) @5 R% t( v2 F' I) H' Q% u9 K - 7 c" ^* ?& B9 V) _
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
% g: l& X7 d; J2 a$ m/ Q4 ` - , y& u0 C/ N2 s
- $margin = 2;//边距
) q0 _6 \' T/ a3 `+ N
* o. F* s- Z" P- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片3 W# R2 J# O* B
- ' X6 ^+ K: R0 X9 p; ~
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ 9 ?/ e7 ]( c3 h9 Y. r, t" W2 Q; Z
- K. ^9 |: T9 q% u
- $QR = $picPathAndName; //已经生成的原始二维码图
+ V9 ]8 _! n$ y# j
% J2 V; n" K% d- $Logo = './pic/logo.png'; 2 W$ N( z* ]6 o9 O
- ' l+ i* c6 P O3 p' @+ D
- $Logo_re = './pic/test_logo.png';
$ a! C7 |4 [7 o: @+ @; D/ K - / o( b! \: g( Y4 L' q/ }/ }9 f( j
- $QR = imagecreatefromstring(file_get_contents($QR));
8 A+ Q/ ^6 E7 K0 S' F3 e
5 o4 p& F# j4 ], W- $Logo = imagecreatefromstring(file_get_contents($Logo)); 2 k0 }7 U7 m- e- `& }, y9 e$ ~
- ' ]2 g. a8 k* c6 E
- $QR_width = imagesx($QR); //二维码图片宽度" B+ s( h8 M" r, ?% \2 S
- / m" D3 k; f; f* A6 @+ j
- $QR_height = imagesy($QR); //二维码图片高度0 w# b# n2 d8 C2 o
- & T- s" ~$ v& l
- $logo_width = imagesx($Logo); //logo图片宽度* P' L1 x5 K* t4 |) w4 u2 T9 G* Y
" W3 a1 W) g% ]$ _6 u+ [% v. w- $logo_height = imagesy($Logo); //logo图片高度
/ ^* h; b! p$ q - , A+ p; s& P9 t, k" P
- $logo_qr_width = $QR_width / 5; 3 P' y: k# g3 }! A
$ i: @9 s0 e# v1 a( A& ^- $scale = $logo_width / $logo_qr_width; 7 H% K3 V# v) R! ?9 ]: ]; l
- : `0 d3 Y6 k" u
- $logo_qr_height = $logo_height / $scale;
. S1 M& z' v. `4 A - & }- u* S, Y' e. v
- $from_width = ($QR_width - $logo_qr_width) / 2;2 X6 g8 K. {) A; z1 O
- 0 C( Z- q; ]2 c7 b
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
I+ p$ Q f4 F2 z* [+ E - ; c+ q( ?& f4 i$ C
- //输出图片
2 l1 n. Q7 _- @4 Y% O% S0 P z
. A3 ^) c6 Q' {* x% E7 L1 r- imagepng($QR, $Logo_re);: d. N9 ^3 I! X3 d& ~0 @
1 J, O% Z7 a( a8 X4 x- }! e1 p6 e) G- ~
- % U, ?" m+ E: g/ l* ?8 |
0 Y* G: K6 F1 x/ W, r( y& _( Y
复制代码 3、qrcode_vcard.php (生成电子签名)) z4 N9 E ^2 D6 s
7 e( J- f* O$ i8 ?" z# [7 [
vCard格式:https://zh.wikipedia.org/wiki/VCard
4 o6 Z& B0 `: P
U) u- ^0 a& L, @ `- , q6 @& \/ \+ h$ S* z7 z" R
- * Created by PhpStorm.
( c3 z6 ]5 d& T - 8 Q4 p) ?; F8 ?: R
- * User: user
9 r2 K+ @2 B$ P7 }" G - * }% N7 @7 _5 a2 b
- * Date: 2018/8/157 n; ?$ X0 L2 x$ J* X4 }
- ; ?) z R# ]4 }" P
- * Time: 23:00
3 E0 R& P" p4 p9 y4 |1 {
* K. ~9 V# p# S: m- */require_once "./qrcode/phpqrcode.php";/** C6 h4 c# `3 ~# \/ v, k. I( o+ d5 L; w
- % W, m( }5 X \. d
- * 生成电子签名6 w' h0 g0 }' A& \! m6 J
, P( v* ~% ]) h7 @* ~- * PS;使用微信扫描二维码. K. W/ H( @( k2 U; e
6 ~$ t' m7 x0 a% D1 j4 w- */$content = 'BEGIN:VCARD' . "\n";//起始标志, J& ^5 e* u; L& T$ ]4 a
- 0 S" M$ S3 B! x" e! k- v
- $content .= 'VERSION:2.1' . "\n";//当前版本/ e2 S% F1 g9 |8 z! s/ h% F) K3 i
3 _. u) y1 s* [% M% r" d: S$ [) f- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名7 c* t+ \' ^, ^- `# M
/ D! Z7 R- D0 U- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
8 M2 j8 Q; Q, Y" J
/ w$ I+ |2 C: \% R- $content .= 'TITLE:PHP研发程序员' . "\n";//职位9 m% o" V8 B) ]! i7 }' D3 I6 ]
1 h. ~# h. z* c( K7 }- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话4 w1 Y' v( h/ I
- : B5 t! E) {7 o8 H8 U C& h, N4 x
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址, S* o9 |& F: d+ E( Q" y, Y
- t3 K& d2 ^ F( L- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
' r, M8 j, E' \ - / H& a$ \ h- }" k# n0 O! T! p
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话- C* r( `! X6 A/ L3 Z7 }8 E% h; }
1 ~: n! Z1 {+ O* h6 B- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
" k3 C: n8 ^- P3 ^% R4 ?* W: v
) R% ` e; e9 `& P2 T- $content .= 'URL:www.baidu.com' . "\n";//个人主页
3 f* r: H& c% B* m0 J% E# j - 5 J' t0 L1 y9 [ f4 g0 f
- $content .= 'END:VCARD' . "\n";//结束标志- V% s9 r, S6 u$ B( P0 n ~
2 Z7 x/ V6 e; M. e+ B- QRcode::png($content);( i! ^5 l5 l3 i. K- C
0 e% _! X7 R0 M$ R N
8 d- c: s1 |6 V: j# O
复制代码 & s% O: ~& O3 G
相关文章推荐:1 q1 b9 m2 D& d3 S& a4 s6 o
1.PHP生成微信二维码实例# F& i+ Z, f. y/ @/ B ]; I: x7 T
2.php网址转换生成二维码8 t6 H) U, u/ T: x0 B A1 q
相关视频推荐:
W3 q3 J! R$ |. p0 x/ c, X5 }) r1.独孤九贱(4)_PHP视频教程6 q `/ R3 G8 _! p
二、JQUERY生成QR CODE+ D6 `# j1 Z% M- x. V% A
源码地址:https://github.com/jeromeetienne/jquery-qrcode' x1 X }( _( e9 U v) H
4 s) [& n; Y% @jquery_create.php* i$ k2 ^9 O9 Y4 Q% y% ?
. h( M2 }7 `5 u' d; |( i7 _% `
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 # O# B6 a5 H( r' t- Q8 c, q
三、PHP识别二维码8 Y* { K6 a/ x; `
1、方法一( V9 x9 Z* p( z
环境需求,安装如下扩展- Q! U+ }* |3 M
- ImageMagick) |6 i$ |$ @$ \0 Y8 j$ C5 d/ s
- zbar
- u' T" F, |- z- V/ f5 T6 x- php-zbarcode
/ O: \6 L5 P/ @5 z' t+ \
+ p" l1 Q `; K2、方法二6 H `/ l/ F: _' A! C9 C
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
! A* p+ \/ \! i- S0 r; W- e9 wqrReader类:https://github.com/baagee/php_QrReader$ x5 k) C5 Y B# M* u0 S
6 x& b) I0 m" [/ R9 O9 M! C
4 Z" N5 ?4 l f, n+ W2 f+ s- $qrcode = new QrReader('./test_logo.png'); //图片路径. B m: h! k3 a9 m; T
- 2 W2 U) ]7 T- Y0 W
- $text = $qrcode->text(); //返回识别后的文本$ R, ?# U. y6 `' w
. C1 E& y9 ~* H; g1 U- echo $text;
5 a( V' A) W9 J+ [: J' ]0 f - 5 z! C. d, }$ D7 ]( r2 k
9 [# b$ v! S% ~# q+ {! {
复制代码
) R8 e& N7 N3 G1 K- X2 e& I链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7% W4 C4 G' ~1 a) Y* d" A: D0 w
0 P# |1 c6 d) @3 y6 Q# Z
* Z+ C6 @* q: w" V" B* Z0 y
& h+ U% O& s) ]% E% ~# ?( Q
+ g) A/ T4 Q; P0 k+ {& c6 E5 A0 c) [0 e
! W4 R/ d1 q$ B X. {& p6 f9 R
5 u/ ]6 P; ]; s& h. ]/ M9 e. M1 K
! H* b; c* o7 v6 s" d! D9 U; X
1 N9 a7 g- l+ E6 ^9 o. P, u& V8 v, F
|
|