管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
( B6 N8 F6 E& C- g* O---------------------------------------------------------------------------------------------------( `. A( v4 S) x
二维码的分类: X8 X+ M# T. }3 C
线性堆叠式二维码- p/ L- u+ w* L+ f& f" h
2 t( {) X: |4 ^$ w+ H6 w矩阵式二维码
, S, y- S# E. A- g; l9 B% ^, T% K; W. h9 ?; F7 k
二维码的优缺点. V- x2 j F$ o' f- [
优点
7 R. J, b2 j0 g' P' v8 Z% _: k; l, M信息容量大, |1 t9 @ D1 ^, n( \- h
/ b) k% T) o5 G' I. B, g3 b编码范围广( F( z6 i$ I: t* b
7 c! A2 J- Y# S4 q$ p# E3 ~容错能力强) t( T- K6 L5 R' n- J
$ ]+ E, Z4 v! _4 H$ |) O3 O1 _) K. |( `
译码可靠性高4 S7 e% e: z( v w5 x8 F- E
! h+ w+ o4 v9 D- q o
可引入加密措施; x1 ?% [$ m9 E1 |8 ?8 F
1 a# K0 }) Q/ g9 @: X1 O5 v/ }, v3 {
成本低,易制作% H2 t0 I. x6 x; W1 ^2 v
! M* A. `1 a( h; Q! K0 l0 X' y
缺点+ J% e4 @$ @/ H! I& E. D* L
二维码技术成为手机病毒、钓鱼网站传播的新渠道$ P% Y: g4 B' H0 \2 ~6 `' P
5 ]; w2 Q4 a1 P, x# ?) B
信息泄密: E) I# L2 _' \$ N1 _; T. H/ D8 L
+ S- x/ z1 n" Y目前流行的三大国际标准
- @- q9 x6 f; F0 I4 B! G1 O) C# f E5 kPDF417:不支持中文
3 X6 N: `# F, t' h. a& ~" T2 p
* |9 i( H( R! ~- W9 O9 O% @DM:专利未公开,需支付专利费用
( u* B$ W3 j. Y. J: i
9 m$ z' m9 M& c) D* jQR CODE:专利公开,支持中文$ N( i- {- k1 d: q8 ]' v
1 C* ]1 s. U" g E
QR CODE 纠错能力( t8 O! D) T" V0 }5 o) ^, {
L级:约可纠错7%的数据码字
t% _6 h& ^0 M, J# Q c) [( F' J V
# A' a! g6 U8 `2 Q3 fM级:约可纠错15%的数据码字
, w! N0 F; V* N& p g4 X( ?7 B6 P7 b9 W+ {% x2 R8 X2 i% g
Q级:约可纠错25%的数据码字
$ I6 w$ j0 i8 q9 |9 p/ |
$ ^% ?5 [1 l# d/ XH级:约可纠错30%的数据码字7 q2 }- E+ b) }
( K) ]8 E* e5 s7 G% f) J
前提条件2 l. |' I6 o8 c, L5 M
GD库" B3 b" a& B1 E
9 l+ S5 B7 C3 z
一、PHP生成QR CODE
# |& c5 A9 |- v! X官网:http://phpqrcode.sourceforge.net/- J; \# S3 a9 d/ Q; l
/ O0 T7 e* q6 P3 h
下载源码:https://github.com/endroid/qr-code; o/ ]+ Y2 _0 r/ `# {$ H, o- M* c
/ {2 W8 S$ k/ M
目录结构3 ~7 D8 g. z" f/ k
( g8 M" a# H: h# Q! n/ ]- n9 p% S, t
6 c: c1 ^, Z8 w7 r- H1、qrcode_create.php! `! A$ s- t; B( ?
ps:生成普通二维码
. t' W; {) Y& Q2 K1 b, W- : U: v3 |0 y( [' H5 |6 _5 V+ q0 }
- include_once "./qrcode/phpqrcode.php";/**
3 ^' Y% `1 \& U, Q
7 v6 [" t% M7 h- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径/ g' z. D: ]7 e' X3 |" p2 m s
0 |, |! Z- b F) N* x- * 在浏览器上直接生成一个二维码(内容为abc)
) @ y% c2 z N - 6 A- [* p0 y+ w; o3 H: |& C
- */QRcode::png("abc");: w! W2 C. y8 A( Q5 \) u* {8 l' B' K
+ K/ f; B3 t9 o* S4 B: n* o- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**8 s% A0 P( \4 t, Q
, n: z' R7 A, f- * 生成文件到本地4 U2 p# l- f6 s4 V' H3 I5 v
; |* x% b) w2 b( J. K- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)9 o3 r6 I* x1 |( v& N
- 3 l4 H0 \( h" `! _ H
- * PS:$saveandprint源码的p6参数做了修改, c9 x% `, S: m! J
2 s" J; o6 e2 f/ ^- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);$ ?/ v4 G/ _: p: F8 u$ ?6 S
- / Z% D" u' J7 D8 U9 q+ e* s
1 @+ L1 f7 n k7 n
复制代码 & w9 ~( M# B; ?/ D
2、qrcode_logo.php6 j1 F3 `4 R0 l/ P3 t2 c; L
ps:生成带Logo的二维码
) y5 H- \& C; B5 n) F- /**
' ]4 g ?9 }1 d0 L4 X - o& i. Q* H9 c) [% e+ X$ m7 R
- * Created by PhpStorm.2 o9 x3 d3 S3 P7 p' V
- % g5 X o8 N0 |+ j* r9 _ e! q( S
- * User: user
7 ^& C% P/ i' N0 b - 1 D$ a9 }- D+ W( i0 S
- * Date: 2018/8/16( h! A* ?$ a/ J
/ U U9 H2 a7 H# Q- * Time: 10:43
7 C/ Y& {' P& T4 h8 _' M% W - 2 K) S- c6 ^: Y+ X& G
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";9 f9 p4 P& e1 H# u- ~# y
- , b! q% j: c; |( N
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
- K( F; v5 _0 b5 e* m. |) m - $ M: B5 r- [) L) ?/ g5 o
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是% k# k1 o2 _6 ~1 d
- 9 }9 \& |% ^0 d- r, e
- $margin = 2;//边距
8 f; n4 {$ y8 Z! Y& e
0 V4 g U2 ^7 W7 r; r! k- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
& F& b! l6 e$ |& Z# R; C: P) b - |/ o9 \# E( F5 X0 R! k
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ 0 @. l! Q/ `3 b# ^: y" v
/ E! i2 z0 Z) ^9 S9 O- $QR = $picPathAndName; //已经生成的原始二维码图+ N9 _% B# h' e4 O8 ^* q$ R
( p: ]5 x9 |- ]& y; a- $Logo = './pic/logo.png';
) O _! L4 R+ a
1 ]0 W: i) {5 G( K3 h5 I, ^4 L/ T- $Logo_re = './pic/test_logo.png';
7 O' a' q: o3 G8 S3 b- i2 l - 2 }' l. [ S: n
- $QR = imagecreatefromstring(file_get_contents($QR));
# ]: u5 Y9 P: A5 H% ~% A) H - 0 z& G( g' C, z- w
- $Logo = imagecreatefromstring(file_get_contents($Logo)); * f3 d1 ^) n, T3 @
0 G* P) Y+ w- B" x7 ^9 W- $QR_width = imagesx($QR); //二维码图片宽度
! E- `: B) u* b - : H/ ]4 D, ]6 G- g
- $QR_height = imagesy($QR); //二维码图片高度
8 r5 T# Y' k6 G5 Y
5 S. t: |, [8 L9 D- $logo_width = imagesx($Logo); //logo图片宽度
7 K9 k% r! c/ j
, L g5 ^+ Q. T7 E4 f( r( t- $logo_height = imagesy($Logo); //logo图片高度. Z7 b+ P& x f! V
- ; r- V- H0 C4 ]; v4 d. _
- $logo_qr_width = $QR_width / 5;
+ S; P) f# P9 Z' @% i - 9 w2 {+ L* J6 j
- $scale = $logo_width / $logo_qr_width;
" u$ h1 S: j$ Z* e. d - ; ?# K0 b& X3 K+ z
- $logo_qr_height = $logo_height / $scale; - @0 M' n! T- z; ?
. x: V1 n! ~7 f( Z! @9 i( F8 D( @: O7 g- $from_width = ($QR_width - $logo_qr_width) / 2;
6 s0 ]% x1 E2 J - 9 ?, W& G& @1 {2 r, ~
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); ) Z' Y9 f2 b# M" X
- ( q6 g% O- q2 x3 I4 u7 d$ p
- //输出图片2 N5 Q. d! M& L7 U& J
) N8 `, i, x* m- imagepng($QR, $Logo_re);0 p8 _; {3 W7 a8 }/ d
1 K: I# q2 g/ J5 a0 y6 F3 U9 J- }
8 u. @/ v$ U% C8 D, P) C" s1 Y+ A
! F1 P- T& K4 }6 j# a* `
: n! @# b. z& q* K" ?& }
复制代码 3、qrcode_vcard.php (生成电子签名)9 f0 b: d7 z/ d, {
1 N, y; N3 ^4 D1 CvCard格式:https://zh.wikipedia.org/wiki/VCard: ~" W. [' Y1 h- J! l# K0 ~, m
0 m6 H6 y- u( P* E
- - z. u y8 H+ {, W" f7 s0 Q7 I
- * Created by PhpStorm.0 c4 R/ F F+ H
- 8 h0 M* f1 ]; [5 A. W
- * User: user) X4 t: f( U* y8 u: Q: d6 H
* |3 K# R" w9 R6 {- * Date: 2018/8/15& \1 b4 V3 Z; C- y( E5 b
4 N! M2 p4 v4 R X- * Time: 23:003 S. O/ ~; f' U' K" w/ u7 e
- ; | M) G8 n& a3 }) s- \7 v# A1 {
- */require_once "./qrcode/phpqrcode.php";/**
+ e# x( h! |* f' G2 E - " _5 g' a! @# x7 p. w& J
- * 生成电子签名
* Y# M$ G. H6 N
8 D ^+ t, A0 F( y [" C- * PS;使用微信扫描二维码
7 L) k! D y* o! x
6 K8 e' q7 V( }( a, D- */$content = 'BEGIN:VCARD' . "\n";//起始标志
1 R* t4 Z5 h+ \
6 n% ^# e2 B7 W- $content .= 'VERSION:2.1' . "\n";//当前版本2 ^/ b: n6 n0 H/ B# p
( s( \% P' r7 ^- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
) _ u! z+ u: O9 h& K# {
6 r8 g8 d* e: J$ g- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称2 u# U: t3 D! b; a3 _$ J3 A
7 s( [) b9 p9 p; w' h0 ^4 \, m- $content .= 'TITLE:PHP研发程序员' . "\n";//职位$ s4 s( b- v5 |# x' k' P8 j
' t: I6 s+ O! U- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话5 }: ~7 g+ ^1 M, i
- 4 S# c; ~ x2 _8 }
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
+ ~7 u) h; V5 j& h' ~. @
; k$ _' [# [9 s) M- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)% M9 y7 g, G8 X+ Y$ o7 l5 ^
- 5 ^! o& d+ j& j9 G) c
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
+ y; t/ ]1 s- O$ d. a
1 ]7 q4 j: l0 h- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱# N1 o# D/ r7 m2 \0 k2 S
- # C& F+ \4 y1 k4 o, J2 \$ J9 D
- $content .= 'URL:www.baidu.com' . "\n";//个人主页
9 b7 }/ l: \! E O8 t& j% o0 X
( f4 ]1 u# E3 Z8 i- $content .= 'END:VCARD' . "\n";//结束标志
! h7 f# s; b2 ` - 0 U# E/ T+ x; i3 C* r4 m
- QRcode::png($content); e7 m5 F0 }) A+ k' a, J
0 F# H6 D5 @7 u* }
& |+ {" u* X7 M v0 G
复制代码 ; P* f4 ~0 O; j
相关文章推荐:
8 R0 x2 q1 L t# l9 X1.PHP生成微信二维码实例
/ p, @* z9 a) P M% a2.php网址转换生成二维码/ O3 W0 B" W, J% V
相关视频推荐:
" h8 K, b1 i' _$ S9 E. n1.独孤九贱(4)_PHP视频教程: e+ P7 z0 q3 ?2 A0 \1 p
二、JQUERY生成QR CODE
8 a5 D5 t) O0 F/ w源码地址:https://github.com/jeromeetienne/jquery-qrcode
& U8 A {( a4 I) g. W- ~) s1 I+ o: B& n1 e! F3 r9 Y* L
jquery_create.php
/ z! q- \/ B8 Y/ r, B
0 z$ N) D% R! C9 i5 I$ o- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 9 { r) U0 P x8 k, f7 n& a- Q
三、PHP识别二维码; p& e4 k! f4 w5 ]1 e3 e: I
1、方法一
6 j6 N5 k6 T, A环境需求,安装如下扩展
5 o5 \0 E% y3 ^; Z- ImageMagick
7 j. W9 S0 G9 u# m- h. \- zbar
9 |3 t" A" b G2 a- php-zbarcode
) @+ c- _9 ]3 K/ |
R ~$ Q, G; |6 p; q( ]# [' x2、方法二- A+ q2 M5 v( v0 C; B/ o
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
]/ `( F& {9 d" K- uqrReader类:https://github.com/baagee/php_QrReader
" _0 j2 u+ m- H, [* M3 S, K4 d1 a! T0 K
- , E' x7 M0 y# E: j7 j U y
- $qrcode = new QrReader('./test_logo.png'); //图片路径
; s' g8 C( ^( R8 Z8 H - & _* |6 A/ H: k9 ~/ U
- $text = $qrcode->text(); //返回识别后的文本- }4 L. e6 U. @. B- U: Y, N! J
6 W* c/ }- L9 \( t' p- echo $text;
. M- Q0 i. r( \, L- P* a h+ [ - & U% d j- B& E$ f' |+ \' L
/ r! G; J: u, [5 f# r
复制代码 ; O7 m0 k" j7 g9 I8 x7 R
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7/ `! @8 B6 U' S! s8 f- F
0 A2 d. ^! D7 f- q
9 M+ z- ]2 Q0 l d7 ^4 q. |# P8 w1 @# Y, Y, f. H
. B( N* {& f/ q0 D' z* S
! @) o8 q' ?6 v- V
8 {- H- B' v8 r; C- C$ v; _
. [ o' g! B0 D. e: }2 J3 i8 v. W5 Z9 A3 }8 H/ o
8 t5 F6 [, O& V) b |
|