管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。) J0 V& n n! L* I$ B# g
---------------------------------------------------------------------------------------------------. {; q1 n5 k5 u8 n3 N9 O; K: C, L
二维码的分类: @' ^3 |/ q# ~6 v
线性堆叠式二维码7 O0 V0 X% x) g! e
1 o+ N- S8 M3 Z) Z
矩阵式二维码% s. t7 Q" H( J5 Z2 E- ~7 m2 p
$ P5 f1 N: T, v, o8 s二维码的优缺点
2 R0 N. e9 [% M/ v优点
: J& n4 P- s0 e' [' {+ p; ^* X信息容量大
7 S. }, I/ W8 S/ L* b, T6 J) K% w. O6 J9 Y2 i- G
编码范围广
3 G- T; O+ U2 c1 u/ p0 P+ z3 M/ m: Z
" }/ G# o* E; ]' i: T9 Z$ x" P容错能力强
: v( B/ j7 Y, B7 P% g) H7 y) q9 O5 a* f: N( C$ w( X
译码可靠性高
6 g9 E1 [. h/ {: x* p% { n
9 b) V. ~5 t# F- E3 @+ g/ J' y) `可引入加密措施
! w% U- D1 R* p6 [9 G( U; U* A" S, Q4 h% R% X! q1 a5 V
成本低,易制作
. Y8 l. l i; y
. L' @2 E! x, p缺点
, P3 w6 `7 v7 l二维码技术成为手机病毒、钓鱼网站传播的新渠道, P2 M2 u% d) X: p; }
/ ^& c1 X4 A. }" u# o+ l! p信息泄密# l' r4 D9 ~* u9 b
0 N0 I3 I& G! o' W+ @2 {目前流行的三大国际标准4 d3 [5 l5 @0 [2 g
PDF417:不支持中文7 Z4 ~5 e% n/ U8 l+ u) |
4 j8 {# ^7 I$ b5 i/ U
DM:专利未公开,需支付专利费用" F2 H# K- C2 |! P( u# ?1 y' X
* q: Y; }4 Y+ |* Z
QR CODE:专利公开,支持中文
1 x* M; O2 g, J2 u+ O. g! G2 ]+ t. a) ?, {& J6 w- g( p
QR CODE 纠错能力
! b% O5 V' U$ D2 O, ZL级:约可纠错7%的数据码字
% M2 o" `( s9 O
. {( s& [8 C8 z/ lM级:约可纠错15%的数据码字& y; F" D. d2 M3 X4 u+ k' @
% z0 n2 W. g% {+ d# W) lQ级:约可纠错25%的数据码字
# @8 Y8 i+ ?# n: _6 V3 ~) P
1 W4 e! y6 F+ s7 kH级:约可纠错30%的数据码字
$ |4 ~0 N+ g) Y% X0 O. T5 s& ~% d# R5 V
前提条件
# O9 C6 ?8 j) b. ]GD库
( n) H& d# U4 j: G; c: T
) ~# d9 `# c8 k; ^9 a9 Q6 m4 Q1 f. b一、PHP生成QR CODE
! f0 d0 L0 n- H7 k官网:http://phpqrcode.sourceforge.net/
# C' `! H, V# H& p1 S( P) p" N: Z5 U( a1 C7 x/ l& S' w2 W. g$ {
下载源码:https://github.com/endroid/qr-code
' e" y' Y& }/ g5 L* i" n s" Z* q6 u# Z5 H- Z( H
目录结构. m1 P0 K h7 p; A' R
4 a1 Q6 R9 t& X5 z' P
( A5 D# y- l6 }+ S( r P& l- p$ v" G
1、qrcode_create.php+ p$ J; {4 p4 Y) _+ G
ps:生成普通二维码- q9 I. R" p1 m9 D& L
, D2 Z! q3 _1 U0 J7 \4 x9 O8 e- include_once "./qrcode/phpqrcode.php";/**' V8 E: }- R Q6 l3 J; h' q
- # n+ p& _( H" D- \9 A
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径: W* ?* l2 r ]' y/ O" g# U& \
/ ]7 X8 _5 Y* ^2 o- * 在浏览器上直接生成一个二维码(内容为abc)
! O. A7 E! o$ ~% f, ]* H3 C9 T - ' t2 {0 T }' T, L- K9 M4 l P
- */QRcode::png("abc");7 Q, g' r# A' K& D" G$ j! T! [
- ' X5 M# \$ T1 J4 {; K6 c, j
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
) ~2 b7 r8 N" Q: { C4 T$ F - - C5 \/ ]8 p$ v; ?" Q; f
- * 生成文件到本地0 M5 u0 T0 v# e O' R
- ( i# }$ Y7 ?$ O! ^+ i
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
+ K ~3 b. Z3 F& ~) S
/ A6 y1 I) f% L3 l9 z- * PS:$saveandprint源码的p6参数做了修改% \! v P- W0 ~6 ~
# P N% |2 a6 {: ~) ]; o8 p- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);7 t5 a( D1 _7 o1 k; I2 q
+ c- V/ ?; \; ~; \. `- 5 f3 o! l, O, l, R, G% H4 d; ]9 {% [
复制代码 ! N8 i' v; |' b- N
2、qrcode_logo.php1 L5 O n# x7 s6 B% a# O0 f
ps:生成带Logo的二维码- 7 d8 m& M% b+ c7 d4 c
- /**# b8 \* a" I$ K, ^5 a
, p# Q1 b5 h9 q: e; M# L- * Created by PhpStorm.
# J3 g! M$ m, R/ O
4 {0 ]4 d( s4 @2 a1 e) C2 s1 F) M0 m- * User: user% `% Z7 B* A% L7 M
- 2 @+ Q i9 U! ]" ^2 T' ]
- * Date: 2018/8/16* k4 M" @* h5 |2 C
( j2 t# G$ A+ l0 ]7 }6 j- * Time: 10:43
( t3 M/ F4 L! _$ N2 x4 B - 8 H1 u' z4 b9 i7 u
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";
3 b4 @) Z4 ~, [* g6 v/ J
& S, |" {! i2 u7 |5 |; P, B2 q- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称; C7 _/ U* p/ O6 ~; P
3 V6 r# ?' g8 y* w1 |+ O! G- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是6 p; g5 R! x7 C U' @
4 y1 b6 B9 Q: m$ `; g- $margin = 2;//边距
3 K; C' a% Q% V8 o9 d - ; Q0 v3 T* d8 t. U) _( d
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片/ f4 ^ Y5 @% z( d6 M8 m
- 2 ^. X1 k+ t+ A3 }) W# T/ L) C
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ : U( b/ {3 U& _' D: d. `
- S9 K2 o/ O( b) ]
- $QR = $picPathAndName; //已经生成的原始二维码图( ~# @( j& v/ r* |& o) M3 [' }
- , Q4 f; T9 l2 j2 ?# @' \6 q6 {
- $Logo = './pic/logo.png';
0 T) K# q" L9 w# A2 z - 7 v" x# q- e6 c% }8 G) l! ~! ]# R
- $Logo_re = './pic/test_logo.png';
0 B/ K0 I( Y, w9 ^2 T0 F! q* n4 @! {1 h5 m - # a$ e6 J! ^& g+ O, Q
- $QR = imagecreatefromstring(file_get_contents($QR));
+ G+ U. p( }' r; ?( N) X; X9 n' y
; _6 J# y: c8 d$ O. B$ P: v; |( l- $Logo = imagecreatefromstring(file_get_contents($Logo));
! g" G3 P3 H& p1 T" V
]; ?* v b$ T3 z! H- $QR_width = imagesx($QR); //二维码图片宽度3 _7 u$ L# d" h% `
- 9 M1 y. x+ ?4 M$ h; D- C
- $QR_height = imagesy($QR); //二维码图片高度- M, b6 M& B- P2 U8 v$ P
- ; S9 Z8 Z1 ?/ I/ l8 Z) P1 y5 b
- $logo_width = imagesx($Logo); //logo图片宽度
1 R i- n; ~- \1 \
$ ]) W6 w4 {2 e9 ^9 v/ O- $logo_height = imagesy($Logo); //logo图片高度& Z: m1 z! s" C; F5 G* c/ y
- ) P$ f, v2 u* j) h/ f" ~2 z# ~
- $logo_qr_width = $QR_width / 5; 3 g) j1 r6 d% @* [6 o. w
& q1 {$ N1 ?$ G/ D3 d9 {# d5 f) ]- $scale = $logo_width / $logo_qr_width; 4 [3 V1 q+ l0 P3 y
0 \7 o K+ d! I- $logo_qr_height = $logo_height / $scale;
' u( S# a3 q$ W0 t2 Y
7 Q7 H& M3 l N- E8 k) H- $from_width = ($QR_width - $logo_qr_width) / 2;; A) J4 C2 m Z/ x3 `6 w
9 Q+ ~( T5 b* g/ Z8 E# q0 E- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
7 ]# V c" J% ]3 n: R) @) a8 D; M - $ }2 Y% F: z* g% d0 H
- //输出图片
# K+ f: l8 D# X# u. X3 M - $ Y/ m% _0 b8 l& d+ n* z. ?
- imagepng($QR, $Logo_re);: s V% j9 |0 X V; N
- + L# L3 C! s* J \
- }, M5 B+ c# p: [ [' T" F
- ; i- Q m' }- A% t3 ], y
$ ?, [* n0 a! K) z" M; s* V' F6 G
复制代码 3、qrcode_vcard.php (生成电子签名); Z# V. C1 V8 U( [$ Y
2 _9 b, @5 l" b5 Z# b# ?vCard格式:https://zh.wikipedia.org/wiki/VCard
}2 G m* T% N
2 s; h5 H3 w0 j4 k! [/ @+ `- 9 D- ]. ]$ O0 q
- * Created by PhpStorm.$ q, a1 G _# f0 k, f3 _* ]
- & B+ W2 y" t& m
- * User: user. J* d. j q& R3 j/ B$ A: G
9 L" T# J: }2 J- * Date: 2018/8/15
; _' D6 k* \4 K" I; |0 u - # H; v+ T* l1 O) a+ ^# `3 [* A5 e
- * Time: 23:00
: g( @! K6 p7 `
1 Y" ~7 Y8 k6 a4 i7 w9 s9 i- */require_once "./qrcode/phpqrcode.php";/**, n b. e+ z& n4 z( B# b w
- $ R9 S* c" T4 q: ]' _
- * 生成电子签名
! B5 C L9 \: Y ?5 P8 ?" E
5 f8 k y! ^& C$ t& f- * PS;使用微信扫描二维码 [: z _; N' ^, r& r) [
- ! Z9 l( ~( u. V4 D% W9 |) @9 Y0 n9 V
- */$content = 'BEGIN:VCARD' . "\n";//起始标志1 V* p" ?6 \; l
- " Z1 Y* E g( l+ `% z
- $content .= 'VERSION:2.1' . "\n";//当前版本
* w8 ?+ \" t& ]4 Z- e$ C8 w
6 g, T. k! |8 B: `6 p8 C- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
' P% T* u# A7 M: \ A6 x* W/ G - 1 S+ x. ^4 _- x" G7 I0 d
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
' c0 G# @- i3 f5 q, ^
0 \3 K: ~7 s% E6 w' x6 R1 W/ W- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
/ Y5 v& i4 E" {- P) H- S# \ - 7 ]% T8 q: h2 K
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
' o0 J3 q3 s' S; e8 r% K
) q( l4 l# j+ s$ {; v) u1 a9 U- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址. R" o% ?& T9 L4 H% ^& E
- . T. s# `1 k9 B8 u
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)9 K7 i6 l! d6 T' ~& X9 f9 M+ z
4 X }, |' |% p6 D- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
8 W4 _! u7 H, W - " F% L o; T# X
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
" V# v; J. N# h& W6 w
+ T* c9 v3 ?; i% Z- $content .= 'URL:www.baidu.com' . "\n";//个人主页
2 T9 E* Q+ o" u# q* m1 ` - 9 _, C( g" j. U. f1 s! @2 l+ f
- $content .= 'END:VCARD' . "\n";//结束标志
2 L7 T0 p9 b& E W, P - % h9 B) w+ J7 E
- QRcode::png($content);
6 R3 \- c. n7 e- Z& [ - * W1 L* v$ C+ {
- , x7 t' |0 [" y9 n( D. H4 P
复制代码
, n5 G4 B j% m$ D7 Y相关文章推荐:4 q+ L ^, P9 Q' F
1.PHP生成微信二维码实例
$ J1 O9 l7 X: x& W7 n2.php网址转换生成二维码' d# S, u& |7 c) ?
相关视频推荐:
: I! h0 W1 F8 o4 l0 V- j# p5 o1.独孤九贱(4)_PHP视频教程
' E( Y# e' { G/ k0 A4 X3 j# [& k$ P二、JQUERY生成QR CODE
+ x) Y8 S# [5 J9 j7 e3 y源码地址:https://github.com/jeromeetienne/jquery-qrcode
5 h& F8 w/ P! ^+ ]. n1 d. Z6 n4 s, F! w$ Q/ i# B; G
jquery_create.php; G) {. Q# d8 s+ j! p3 ], A" [
+ Z4 n: p8 N( |- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 : {, V. ~0 V% Y+ ~- M) \& G6 l
三、PHP识别二维码
1 G7 p% B& T0 K y; s1、方法一
0 e$ d: z- C. H3 r, c$ U环境需求,安装如下扩展
( c! v5 W8 h0 A- ImageMagick
% i& m. B/ t4 X: J* z8 D- R- zbar7 \' D$ c. U1 V5 E! c) V
- php-zbarcode
+ j# @) W6 P, ^( D+ w- M: B
1 ?6 b! ^- K+ c' f+ f {( z5 U2、方法二4 g' ~8 }- K B: H j- q- C$ a
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
3 w9 O! ] {( N6 a; p, ]7 ]qrReader类:https://github.com/baagee/php_QrReader% k# K% W7 \! X: X) J+ L# s
6 d7 [9 h& F" e
7 ]" R1 x9 o, I9 b5 P- $qrcode = new QrReader('./test_logo.png'); //图片路径
( J: z" \: W, n2 H+ s
( k7 Z/ j5 Y) Z- $text = $qrcode->text(); //返回识别后的文本5 Z) B/ u% ^" m2 Q% E' o# X
* i+ Z2 y v! k) [' u0 \- echo $text;7 J9 X! g, D$ Y) V1 }
- 6 S! [* R- b- k6 n1 b3 Z+ e3 h) u
- ( I% x! L5 W/ J2 S/ h5 y; P, v, [4 R# s
复制代码 $ H- o: j# h7 Q! {; P
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
6 g% u. G, L$ Q/ L; n J* z6 R ~
; e1 p$ r, s9 P5 P; L D
@; c+ B7 m) r
* @* |* v" V" N) W3 a5 K' y
9 v) Z r2 `3 a9 ~" M/ s! H+ p6 T6 ?$ ]* X6 [0 l8 V; ]
4 D7 P# e9 P: t* w0 u* u
: {" Q) ?+ d' X- P
; Z x! ^- K0 `8 g |
|