本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
+ O1 S, e; U! a( Y% [3 w---------------------------------------------------------------------------------------------------
: m+ q1 \) J* C& V+ B/ G# i- R二维码的分类' F7 L, C. J% c0 F, E+ x
线性堆叠式二维码
5 ?$ C; L, Q+ k5 I
4 ^; y+ E; D4 i矩阵式二维码
* o5 c& ^, C. b: i1 q3 M3 b1 j' z. a# g( p3 f
二维码的优缺点
; U% G4 v( d, N) i* _: D4 O优点
[# m5 I3 Z* R2 [6 B信息容量大7 h, l0 V- O, B$ u) w @
+ {# V2 L! V5 C% V! h
编码范围广7 I, ~4 ^9 n9 o
* c, h7 x( p" z+ E) o
容错能力强0 [: u" ?3 Y& r' K
' p6 d& L& c% Z7 [1 i" X7 P译码可靠性高
8 t- @$ d/ `5 R; ]* _7 C2 D2 u
' Q3 \+ c9 O1 V3 z/ J可引入加密措施# u: b3 ^ c4 u u1 ?) x/ o; K
7 @, Q. m3 a: k
成本低,易制作" g7 U* {6 C |/ h' L
+ E5 ]$ h* C# i缺点
5 `5 Z# q$ z+ B2 B二维码技术成为手机病毒、钓鱼网站传播的新渠道
, Q* a( s0 Y* j8 n9 J: d$ o
) T4 Y- t% G/ b信息泄密
" v+ P4 f) ~9 a7 t* w- i* A
2 ^( B+ |9 y* [* \% r目前流行的三大国际标准
0 S) I* R* O. O4 tPDF417:不支持中文+ n% {4 r2 ]; @" E. E" Y# D" ]
, h, N/ B: _% O( F K! IDM:专利未公开,需支付专利费用" I. |9 w% Y3 J' ~
% X* P3 |9 a1 M. }: ?7 sQR CODE:专利公开,支持中文5 ?2 l. L0 V8 R# J
) |, ^8 ~) o+ Y2 ^( y' QQR CODE 纠错能力
% q" X7 F, C! l7 X/ X% C8 SL级:约可纠错7%的数据码字" Y- N, h* Y+ j5 ?" {; G
! T: x+ w- ]. f' D( D: aM级:约可纠错15%的数据码字, r% v: J1 [. q& e+ N6 ^; q
8 i! G7 R$ f2 V+ _* ~6 {3 z: I% RQ级:约可纠错25%的数据码字
( F! K) y" a i$ n9 U$ |0 F4 l: Q& O2 Q" B
H级:约可纠错30%的数据码字
" Y1 H8 N! O" X. P: w6 M. d P" a e8 Z& S, [# P- \* j
前提条件. U* J& O. N' @2 h
GD库
7 N9 Y" p2 W, j* `& G7 ^" k5 Z; g! P) n/ b
一、PHP生成QR CODE& \, n1 \2 o* N4 J8 m/ s
官网:http://phpqrcode.sourceforge.net/
- E/ i' X5 @, s9 f
0 Y) `* y. S8 Y下载源码:https://github.com/endroid/qr-code3 S& `6 y% G" \5 \
; ]- f0 e4 ?8 m! u: d& _
目录结构
9 v) a% U2 m* s8 n) `* t
- Q/ U2 W7 h( I4 L, N; r
$ L A( m2 l2 f/ L! x c! u1、qrcode_create.php5 u7 B( M' `0 Y
ps:生成普通二维码) P) T! d- w" F! ?
- 3 W$ @' y2 R4 H$ _4 f
- include_once "./qrcode/phpqrcode.php";/**
# d, U* p6 R( V8 X
3 \# T7 @0 m" C5 V- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径/ p& p# D; N2 W% n; ]3 P" R) r4 k
5 }) _7 ^+ U( \# F2 d7 C2 a- * 在浏览器上直接生成一个二维码(内容为abc)) c& G* K1 q: H/ [! I
% X# |. J* ]; \6 A/ x& F- */QRcode::png("abc");
' Z) P( M/ u: c, X7 _0 J& o$ A) `( ?
% H4 \- _) a3 c' V5 c/ m- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
) z1 }& v1 k+ P - # p: D& \6 Z/ { M+ ^
- * 生成文件到本地, z: [, @+ p) ~" r" L
/ }- b. ^( D/ H( F# ?4 w- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)) P; O3 P7 X% K; G
- # g5 {2 ?+ c7 Z- H- i6 n6 B* `
- * PS:$saveandprint源码的p6参数做了修改
3 I+ V0 h" G; E
/ P* f! F6 r6 j( C# G- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);1 h+ p4 M ~6 E8 S! R* V
3 a" y9 ^ N5 t$ u- $ o7 X9 F4 B0 V( |: w: y: g9 V& ]1 l/ d
复制代码 , a: V2 }1 v- k# q O, o
2、qrcode_logo.php% a1 B* \( T& | E O3 y
ps:生成带Logo的二维码
( `5 g3 k9 n/ Y% \- /**; J; v y% ?, Q/ d- k
- 4 b3 s O" Y$ m L7 V9 s
- * Created by PhpStorm.* s! q. S# B& m
' n L4 L* J2 L4 f- * User: user
( u2 E# Z! a& b, @7 R& d
4 G4 f4 N. m+ @+ ?) ^- * Date: 2018/8/16
7 c$ t7 n& \1 t- o% v' n# Y9 l+ D/ Q - 0 i! r' X; a% q) a& Q: w. W
- * Time: 10:43
, G- [6 \0 h' @& {( A" `6 ~- A9 ]0 O - , m5 q/ c& T$ D9 H
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";3 W% ]- _2 @# \* F6 t* V( Q
- , h& I6 i2 Y2 Y. Y
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称" H6 L' k, q1 U: W/ e3 N
0 {; E E/ _9 K1 W2 C- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
4 n' p' g# E% L0 z* \) d% @, `6 F - J- E9 c' e. j* T0 S7 F" |/ ?
- $margin = 2;//边距" f9 T. ]: ^+ F7 G2 g' i, k
% S# ?6 \ E3 f/ z* U0 u. R" j- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
( [+ v7 @. y+ E$ V* p( H - % H: ]$ |" g# L1 F! \
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ # q3 Z0 W% o9 R6 x6 h
- 5 G% ^$ O2 h; D8 V: ]0 ]
- $QR = $picPathAndName; //已经生成的原始二维码图5 Y, |/ S$ |! P8 H
% J$ ~, q5 @" z) x6 I, V, m$ S- $Logo = './pic/logo.png'; 2 p T) R, ]0 p# C: _3 Q
! q9 E; p+ _4 c" h- $Logo_re = './pic/test_logo.png';
5 f6 E1 F# h0 p5 `$ f6 H
, y) X7 l! i0 Q$ r* s- $QR = imagecreatefromstring(file_get_contents($QR)); ) Z1 A1 p8 O$ g9 p. Q' m" a3 n' o8 F
, O5 T. _# R! V/ Z- $Logo = imagecreatefromstring(file_get_contents($Logo));
+ X5 r4 M( ?" M2 ?; O+ X# A - $ t2 L* J6 X& ]7 i! f
- $QR_width = imagesx($QR); //二维码图片宽度
7 E4 u( B# D e! _- A! X0 u- k - & g$ |9 E+ T1 D, o+ m. q! D
- $QR_height = imagesy($QR); //二维码图片高度+ ~, @" [8 g: K: H
+ |% J" b: M, w/ ~! c4 c- i) }- $logo_width = imagesx($Logo); //logo图片宽度8 e; d0 ?4 y$ L" n7 S$ N
/ N9 ?" F1 {& j' X7 |; c: s- $logo_height = imagesy($Logo); //logo图片高度0 C ?& ~& w% t- P' q
- 3 F# r& O# f# j/ O: ~
- $logo_qr_width = $QR_width / 5; , W$ u2 _3 \7 B5 ?) \
- ! @+ f/ Y, ^) e$ j# O5 m
- $scale = $logo_width / $logo_qr_width; : a' ]* e& p) w1 F
- . X& X* `8 x/ ]! M/ R8 v7 m
- $logo_qr_height = $logo_height / $scale;
$ j6 x- e. v- G! J
0 @4 g, Y+ Z2 C& F- $from_width = ($QR_width - $logo_qr_width) / 2;
& i' C% X' B6 G/ \7 ?- O
5 W# \! m$ J& D' G7 _& K- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); - x9 ?- ~! K- G" ~- T
& D& v* ?9 K! ~# Y, c1 n- //输出图片. }) ]' @$ Y" _4 K$ `% W
- / B* R' r; B+ E7 v! |- V
- imagepng($QR, $Logo_re);
+ G5 j+ j5 c: l$ w
" ?7 v8 M$ Y( a& f& f; y- }
2 B. Z+ S- p" [) _$ _8 |1 m6 t - - ^5 r; f4 U1 O( M1 Q; h6 O" q# t' P
- ) L7 P: V- k$ n5 ?) k; M
复制代码 3、qrcode_vcard.php (生成电子签名)/ k& @9 k! W* R
' L0 c! ^) m" f% NvCard格式:https://zh.wikipedia.org/wiki/VCard
2 U( D+ a; _3 N" q H$ K
$ i; [1 G5 B9 q1 B8 q; ]; x. o* Q: N" {
0 \* V' b4 u7 D$ h- * Created by PhpStorm.
4 b7 C# L- o) s x$ w* z' H5 H) G# z
$ ?. Q; R! T7 o2 V- * User: user
3 P# Y& D) `$ j3 t- u4 a; q8 i - ! ~, Q1 q+ v6 t/ E' p: z) U
- * Date: 2018/8/15/ S! [+ |" h' U3 P. C
- ; M6 q- s, M. w7 w7 y
- * Time: 23:00: ~) X2 [( o X) f/ m
, Q! j! B* S: |6 w; v9 ]- */require_once "./qrcode/phpqrcode.php";/*** g; o" K& J" c" r, F
- + R) Y( j* T1 s+ }: P0 C4 M2 W
- * 生成电子签名7 v+ { B! }( |: R; Z; [: L4 o
/ h: L. l" @4 A3 Z# Q! |- * PS;使用微信扫描二维码
% [ ^7 S: B' I( r
' m6 e X; q; O2 p. m: v7 {# s- */$content = 'BEGIN:VCARD' . "\n";//起始标志' ?' \ C/ ]4 v# X; D+ \
- - m M, y% I2 K* R' G1 Z
- $content .= 'VERSION:2.1' . "\n";//当前版本0 V. I7 i; r! X( [
- & U& ^; k, s. _* U
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
' y) f7 N1 f; o. R* d0 n/ e - 0 p' e. M5 `# \( h/ Z5 h+ `/ I
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称& j4 b. d: y/ Q; `7 \. P2 a
- 1 e) w3 M% N# a3 m- D
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位 E% c6 C9 [: Z/ _6 q. H
- 3 M, e! i. q" t; i- O" T* a& ?
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
2 z) \2 l- L+ N$ W r% Y& F ? - 0 g7 t( l- ^2 A# z$ x
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址5 V q. K) K3 d8 S# X% ^
) u: X: U! m2 d" f6 g- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)% @3 v2 }* q7 ^- C
- * z J. b, X! h: @$ i7 t& V
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
! n2 U) q8 _" H0 Y. a - 1 A0 h# P9 k) W, r
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
' H" {2 o# w& M* p - ; s$ t6 t$ a9 J7 P5 u( h
- $content .= 'URL:www.baidu.com' . "\n";//个人主页: ~* A) w/ s: E& N: y9 g) G e
8 l! y! q2 U- l$ s- $content .= 'END:VCARD' . "\n";//结束标志3 E4 M1 x0 Z1 L9 m
- 8 ^+ \0 L# y' A
- QRcode::png($content);4 U7 S9 L4 M7 Y2 e8 G
7 U- A0 U$ e* ]3 O
i& H% }0 M. w6 f& N9 z/ v0 U7 `0 {
复制代码
8 y. {1 F' x4 S: K6 f相关文章推荐:
4 {$ B5 A9 y7 i0 Y1.PHP生成微信二维码实例: }% X6 E8 e+ G5 ~7 F1 K/ L
2.php网址转换生成二维码) z; E& ~$ p9 |6 Q" A% [3 d1 P; u: [
相关视频推荐:
5 x& s3 C5 k* @9 P7 E1.独孤九贱(4)_PHP视频教程0 n1 Q$ `7 l& b) ]2 P) N% ^. [
二、JQUERY生成QR CODE4 V! c' F5 e, g7 c' U7 t3 o* Q; V+ d
源码地址:https://github.com/jeromeetienne/jquery-qrcode
* ]- X2 r% S+ F
; l/ b- i7 M7 Q; z/ _3 y: ?jquery_create.php# {. b* C1 S) O; l( ]& `( f" L
# K: U" o; V5 Q& @2 E
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
0 J( o- w1 s9 F+ j/ n0 G! ]三、PHP识别二维码
0 X8 [; X) \4 e' N" ]; p1、方法一
/ t4 U+ P2 y( @+ ?+ x环境需求,安装如下扩展
9 Z* \6 @5 i5 t# H- ImageMagick5 P& r" n+ }8 A. X1 \5 b
- zbar
4 I' n! x) m7 z1 K5 m2 i- php-zbarcode
# t ^8 E, K6 n+ W" F1 B, {8 G1 y
2、方法二
3 i2 J7 q" i C5 t- bPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以; a2 I, ^3 G! x& N
qrReader类:https://github.com/baagee/php_QrReader! H+ |6 i2 q' S3 y4 Z7 x i, H
" A, x1 o: B6 z5 _
- % U$ v+ [6 }8 l
- $qrcode = new QrReader('./test_logo.png'); //图片路径7 A( m) Y$ {+ n# A" \
- 3 k, v+ i; Q7 O4 J; E" B8 R
- $text = $qrcode->text(); //返回识别后的文本
p2 t* _% G W! f# n - ( J L, O1 I5 m2 p }
- echo $text;
& {' j, N+ U# h9 `
# q0 s3 Q& F/ u6 w- 9 @0 J8 ~7 s, \3 k( V. t' p
复制代码 1 ^2 W g: h& |9 k
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y73 [ Y6 K/ W6 [) K: O# [ F
4 G! |' x o8 C% S+ d) u9 @) A, E; C6 u. Y( {8 G z
' j9 r# V5 B1 L% Q/ P
3 I; M" w. Z8 x( q
& L2 k; c4 Q1 l4 k
% J; D0 N: L# g' c0 [
! a! `+ y# [0 z# X( x8 k! U* S
4 r7 q5 u) S- U- G: T" g( X+ m' E v) ^
|
|