管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。' O" U, h1 B! j. s
---------------------------------------------------------------------------------------------------3 u- o. x O" x6 r! W
二维码的分类/ x3 ?' V2 g J% ^
线性堆叠式二维码
5 K- e3 G- i, {( b L. _$ X
# Z9 L- @6 T* E9 g矩阵式二维码
+ W$ L( @7 O5 i# }+ @' L. R; \( D5 [3 U/ \& S E
二维码的优缺点; _5 b4 B, E8 M" D
优点0 A5 I$ ?6 V {
信息容量大
" x. u" ]3 B/ {
/ J% C! W! `3 K7 C1 @% ]. V编码范围广
4 ^- C0 d8 R& X5 F5 c0 t$ H1 t: h" u% {0 Y8 B& }0 D
容错能力强
# H6 E' A- s5 }0 e) S+ \
2 \3 t( L: P4 L ~% G% t) r译码可靠性高" p/ I% V; q3 f8 r6 W1 y1 h% V: S. h
, |) D: `/ m* @3 @4 J" W, h
可引入加密措施1 C, g+ E6 o$ n% Y8 W
) W2 r, X$ d# z+ Y" F: e
成本低,易制作# u" Q* E' f* E5 i
) z- C* I$ ^# e缺点
6 B, w# P5 |& ~9 w二维码技术成为手机病毒、钓鱼网站传播的新渠道- S* t0 D- p0 G: \( Z: O% {# z
; Q9 O& j4 @+ b
信息泄密* Q8 m* J; R% I0 T9 F
, E, G$ v/ C' z. F( t目前流行的三大国际标准
( e+ a, U. @8 Z& D$ _PDF417:不支持中文
) {5 |% h, Q r7 p, n1 p/ S* i$ A/ Q; h! w% Q* E. C# x9 e
DM:专利未公开,需支付专利费用
( {- J* R5 B$ \7 P8 G' A* }0 x, }5 z: m+ r; `* e
QR CODE:专利公开,支持中文9 D: I" h H6 m V* c
$ B( G1 L5 j% A4 l9 E
QR CODE 纠错能力
2 }9 A0 i& B- I6 QL级:约可纠错7%的数据码字
. o, J' ^* P' a/ o
' K+ }5 T3 F* T1 h7 u x: LM级:约可纠错15%的数据码字, ]; r- _0 ?9 N; b
0 d1 L' Q" v# i& aQ级:约可纠错25%的数据码字
' |8 ], G5 m& i% T; D2 w3 T9 M# c1 M# w
H级:约可纠错30%的数据码字* `8 i0 x* T7 _( Q/ e3 V1 M& y
9 \9 v/ m* H3 e) g: w前提条件
, V' y& h$ E" n# ~! Q7 hGD库
( v: s2 }# p) l8 K9 C% U
8 i/ M5 X( r4 A5 a一、PHP生成QR CODE
) a) R! a% Y7 ~9 b9 _官网:http://phpqrcode.sourceforge.net/% A% @3 h) ~* ]6 x8 r# l; v. [. [" ?
# W! W4 [6 \/ V5 M" ^& o
下载源码:https://github.com/endroid/qr-code
$ O4 d4 u( ~# ~: J% I
6 n6 d/ h: B$ s目录结构
$ U, w0 k8 i8 `- ?
5 O. |3 q9 c; l1 G& f$ U9 t& m# O
, u- o/ Z% A) G" S( p8 F1、qrcode_create.php
X6 H. e7 q! p3 D6 Ops:生成普通二维码
; A9 z( l% D! f2 C
0 c. M# P a! j. s# x0 s- include_once "./qrcode/phpqrcode.php";/**0 B' c T$ Y) n' ^+ c$ l
- ' S: M1 O# N- p- K2 H& k
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径4 R4 f2 F# w) A" B8 S5 i/ h4 b
' f) U$ r# \* o. H& F5 ~( O- * 在浏览器上直接生成一个二维码(内容为abc)( X4 }% t% d! g: l/ Z T6 ^
! \5 V: J7 p7 j7 e9 F( H- */QRcode::png("abc");
5 s$ s& y8 ]- p# q8 n0 Y - 1 g X6 g9 X& R+ r7 C, o: @
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**0 q' `& j- R: D6 w' H F2 B
- 9 l# R* ~1 @9 e j/ l3 I
- * 生成文件到本地
# s) Q3 X* [8 x8 K" `! i$ c - 5 x4 k# A |; w8 W% R6 {3 O
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
+ i3 s: a- S3 n& `$ l1 p1 L' m
# D5 v b; M' l& r f3 {) }8 `- * PS:$saveandprint源码的p6参数做了修改 y8 w. Y) t/ z- D
- & H4 A j4 g5 @- @
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
1 u5 i1 J- |2 P) }$ N: {+ N+ Q, g - 9 T0 R" Q& y( k7 F1 O/ B9 V
$ `8 q! D0 b+ N9 [0 A# U7 C
复制代码
i1 U5 U% v S- b9 V2、qrcode_logo.php
' p# r; Q! \% p$ i- p yps:生成带Logo的二维码
+ c$ L% c [9 z: Z; f; g9 `5 n- /**. j' V8 A; W5 s
. X( c7 Y0 w9 _ G7 ~- * Created by PhpStorm.9 q. f2 y/ N. v, H) p
- 7 E0 H7 C% ]& _! @6 Z9 }! {" V6 L4 C
- * User: user
5 g: `" ?/ {! M7 a& P, [: V - . N5 c3 p& o& D I8 }
- * Date: 2018/8/16
3 E) @. M1 f/ T+ H( I. ~; J" N - 7 M2 L) c4 ?5 H2 o$ P
- * Time: 10:437 @, ^1 F$ P9 d1 W7 ]
- $ I9 I( V* K6 Q$ c
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";
+ R5 t; x9 I( G K
" a) F0 d, h8 T3 `! U0 R0 @& v- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称' t+ _ Y, P, q% d$ Z+ f/ ]# r
- M. N Z. K4 V. t2 S- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
: |/ d# X9 P* ?
% q* C- t) c! s4 O- $margin = 2;//边距
3 i& G7 M2 |7 y* y. q0 I3 Q - ) |; N6 q. J" T0 a, A
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片% }4 k3 j5 W6 y7 Z' _8 N8 l
- 6 W4 D& v1 y( U/ o' q' M+ @
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ ; } y6 c( L/ P3 {. l" R
4 u4 N* I9 p4 X% z" q5 b | G! v3 A- $QR = $picPathAndName; //已经生成的原始二维码图- ` z2 I4 ^8 d, F0 t" {, G
; T% v( [% s8 S$ C: o. G( }8 b& s- $Logo = './pic/logo.png'; ( r* k: P& g& s3 w/ B
- ( ^' @% J3 x; w; ^# T
- $Logo_re = './pic/test_logo.png';
+ v. p) [; }2 j2 b. ^& B - 1 G0 U& Z# f/ b2 h* ]
- $QR = imagecreatefromstring(file_get_contents($QR));
7 }2 h& H6 {# a3 E
5 e' O$ ~3 q% D) `# P- $Logo = imagecreatefromstring(file_get_contents($Logo));
! H- W/ S! ` F) Q2 ^4 k+ t: t
U7 \) b' W+ e* G1 P6 [6 u2 ~# w- $QR_width = imagesx($QR); //二维码图片宽度# G. a: ]) f( g t% U+ ]6 x/ W
- " y- U S# G2 b S- K8 E
- $QR_height = imagesy($QR); //二维码图片高度
2 ~- F0 |9 P1 }* q4 W0 e8 r - ' W+ Y4 V1 S; K+ U
- $logo_width = imagesx($Logo); //logo图片宽度
) q) u" {9 l' ]3 ^/ Z$ f2 z - 9 s4 n# ~& q9 u- s' b+ l# L7 _
- $logo_height = imagesy($Logo); //logo图片高度3 N1 I* ^9 G7 c1 c4 K9 S: V
- # y$ [- |/ ~% o1 R: K8 v f2 @# _
- $logo_qr_width = $QR_width / 5; 7 H, J6 S! [- d/ S5 D$ c
4 n$ A; T# Z0 x. p, l. `) _1 @& ?- $scale = $logo_width / $logo_qr_width; 5 K6 ?9 Y# [$ k) Q0 a- ?8 r/ q+ [; l% `
- ' E/ P: T x/ t; Z& [( C8 Z; ^
- $logo_qr_height = $logo_height / $scale;
/ I5 N9 j. X @. X. a7 I- \
( T5 E2 J: |+ _- $from_width = ($QR_width - $logo_qr_width) / 2;6 ]# y {1 K) a+ d# F8 V3 M1 @- U
v. N. Q6 t2 g. y9 E0 o$ `- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); 3 G8 [" H6 Z& N3 x
- ( E' t3 T& @7 T1 K. O5 B, D# a
- //输出图片$ n0 t- \+ [* d6 z% e
5 ]) [9 e( R2 y- imagepng($QR, $Logo_re);
7 q# s+ ^( q5 l; a - : z6 ~8 t* L* G; W, w3 t( `
- }
4 h6 R9 }7 E: ?, q# Z$ M i3 I
" Y( z, @+ q1 b2 Q; n
; \: Y/ S1 x- y8 h9 ]/ F2 t
复制代码 3、qrcode_vcard.php (生成电子签名)' a9 [& E( \# K; W
/ Z5 ]/ g, {) d& @4 o
vCard格式:https://zh.wikipedia.org/wiki/VCard
" c, H! u* y: @( g8 A
* H+ a) T6 i. ^/ t* C. W- 9 C9 I8 k% y! I- P% Z( F# n" Z2 n" q
- * Created by PhpStorm.; o, k0 e8 A7 k$ ~# y: _3 x, x/ v
* |: n& \% x3 E. D k& h- l- * User: user7 ]& I. |2 M1 H: B
- 7 W ^# [ |* ]# A, M) V
- * Date: 2018/8/15
0 i0 q! L2 n- F% U/ I; A3 y
7 m8 {3 u; Q" L8 }8 b- ]8 i m0 L- * Time: 23:00' F z8 k: T. _8 g! R
4 I& x" a% Z) {2 \- U( `) j& c( a- */require_once "./qrcode/phpqrcode.php";/**+ h! [2 B% m$ X/ z. x
/ C5 A$ p+ I5 f2 ^" N- * 生成电子签名
- q$ }3 U7 V9 ?9 H1 i3 F! C
1 K# x, L* W9 y- * PS;使用微信扫描二维码
+ f7 s8 l* ]% e3 B
) ]/ [" H6 I0 A- */$content = 'BEGIN:VCARD' . "\n";//起始标志9 q N* J& a! Y! x5 B% @# ~+ p" N
- . o% i d1 J/ B
- $content .= 'VERSION:2.1' . "\n";//当前版本
0 D6 a. p E6 N3 y - # w) _/ j2 T+ N+ v
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
* o! j: y# m* }) A6 H8 g/ b. K( ~+ t
Y3 ^* I/ q' `- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称: e/ a( o j, A0 B. ]# O: O3 X
+ T- D' G7 g1 S8 Q- $content .= 'TITLE:PHP研发程序员' . "\n";//职位$ F, C' h) x% Q1 r. _
+ D' R2 j( A8 k. h- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
; \1 H# ~ d+ R, u/ a2 y0 y - 8 R t$ M( P* ^# R" I/ c
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址6 b3 ?2 n0 Y& f; {$ n6 p) X9 n: J
- . W! t4 Q7 d& ]- I2 x1 K
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)8 l/ |' b* l3 F4 S
T& @! Z4 K0 s7 b8 s; w. H- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
0 b6 O* w; k. J! U
. {0 V) \) O' G- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
! K0 z& U# [1 g8 ]8 \ - 1 m5 R# @5 D* N- Z
- $content .= 'URL:www.baidu.com' . "\n";//个人主页6 i% O# k$ U" y2 U( u% w* }
! |4 E: W# z/ K: r; W5 B$ [% S- $content .= 'END:VCARD' . "\n";//结束标志, W0 b+ x( T f' d2 D y/ P, }
- $ }! ]! ]) q: P+ B
- QRcode::png($content);2 v$ L3 y7 A" X8 T% x
( A3 Q7 i! q( @2 ]- _7 \- ' f+ H7 X/ ]( p) d+ S: S& j
复制代码 ( v k& [: L9 b& L2 W
相关文章推荐:
2 m- ]8 R- L5 m! [4 V1.PHP生成微信二维码实例( F8 e7 s: B1 J7 j
2.php网址转换生成二维码+ W/ E+ g' \/ b3 S5 V1 d& U5 ~6 V# I
相关视频推荐:9 F6 p" G `1 w; ]1 N
1.独孤九贱(4)_PHP视频教程- s$ @& B7 `5 h9 |, [: _0 Z b. d
二、JQUERY生成QR CODE
+ u, n( u+ w3 ~+ j! C o源码地址:https://github.com/jeromeetienne/jquery-qrcode0 Y9 e" w2 _3 e y1 P7 F7 o
. V$ K6 M" P; ]6 ojquery_create.php
' p9 H* x. ]! ~: g4 }/ }
; m" {# |8 v* m1 E5 ^$ y$ v- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
* O0 \3 S- ~8 i+ d& e三、PHP识别二维码+ F- D6 B( H5 [
1、方法一
9 n) @7 A% ?5 A! X) @( t2 `$ l4 H环境需求,安装如下扩展
4 A% b, q! @. D( @* y/ ~- ImageMagick
3 r/ M6 @* p4 L# B! A- zbar
! w5 L: i* q; O9 s: j- php-zbarcode- i4 S% |( Q" A7 y
( C, `! L0 S! g3 u2、方法二
7 i4 \! S/ q. P0 l; C; t% P4 x/ V2 TPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
; _; _2 W, Z& s5 Y7 A. J( OqrReader类:https://github.com/baagee/php_QrReader. n" ~, r [4 N6 S% W
( c2 d: A1 g$ j5 }# k6 h5 b
9 M% T* `- k/ j5 q$ \1 L# W% {- $qrcode = new QrReader('./test_logo.png'); //图片路径+ s6 J4 A9 G, O0 l4 \8 i( U ]
- 8 e% ~/ ]; V0 S/ q% u3 x
- $text = $qrcode->text(); //返回识别后的文本
# x. S6 k- A# i) Z2 E
1 Q3 A8 y" K, ]! D" {# O- echo $text;
* e$ t( a4 @9 |6 e6 v& q& Y1 r - ' q1 V; U+ c6 t! r
- 1 l3 q+ _$ k; `9 s, ?' v+ @, ]
复制代码 ' c3 q& l# P% ?! F# C6 y$ ]' {) |9 {
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7: ^- T4 n. z: u! H& g
# e& t4 [' n. E! f1 G9 G0 E8 K( ?$ `& z! i& t
2 @8 n+ v: b$ {! G. p
. H- V4 y6 b1 |- Z# \4 R3 w, h, p, V+ n/ K& E% Y
9 _; b* ]: {! z! @7 Q! ?8 I# q
5 a) Q( h1 e5 t$ A8 w
1 i1 H) G6 [, Y: I( F
: z4 ^1 o$ {. C( r4 h
|
|