管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。6 y; x1 j J0 h" u' l" A6 M
---------------------------------------------------------------------------------------------------
# U" C1 c- Z& I二维码的分类) n2 t/ R* e3 z- T! c. n7 p
线性堆叠式二维码. V: |4 E9 S, M9 E
) T! Y- X* a( I9 b6 Z" n- @: f矩阵式二维码) `! }4 X' |8 a: ]1 H$ G) L
t+ I) B) M g6 I( V
二维码的优缺点. m- ^5 g" p) h, U! r
优点
4 C. f4 j8 F" n) y信息容量大( A6 W, K i3 E; F
! h7 `9 `, n- _/ q. r. X
编码范围广( i% N6 X& \2 f$ X' U! R$ J; ^
! y! i) p7 n% [) G7 B
容错能力强! w3 Q: E) r3 m: ~0 G. S
5 L+ P' G# i0 a) W- R X
译码可靠性高
8 t' f; ^- q' L
" `1 _/ O/ i3 S+ D3 W可引入加密措施
1 y9 o1 Y* r# |$ f- c& k# J! Y/ h7 y
5 Q5 |* z7 n1 }4 i成本低,易制作, X6 B2 |6 f% s2 Q' q9 U+ G2 D. c
0 Z: h, H8 T- G& y3 H' f4 b
缺点
/ e$ M: p" ]5 ?( D二维码技术成为手机病毒、钓鱼网站传播的新渠道
. D; P+ k# d! m$ ~: l8 |/ i( ~) L% e, w- _, {4 o% d
信息泄密
/ L: P( _6 Q% F0 y. Y! L$ @- ~9 q% _' J9 J( s
目前流行的三大国际标准
0 o) Y$ E6 y" bPDF417:不支持中文
, y, ]: E$ u0 ?: v r8 U& P6 q- S! @3 j2 H/ f
DM:专利未公开,需支付专利费用
+ {3 r; O' e! f1 c" K
D4 @( r; w! m, s( C- @QR CODE:专利公开,支持中文
4 M7 g* f. U" N$ `) \
8 N+ ~8 u, \- M' P- F+ ]9 S+ D7 DQR CODE 纠错能力
2 w! j' v+ h" o" ^% z! P9 ]- kL级:约可纠错7%的数据码字. h7 i1 {* ]3 ^
) g& H0 D+ q2 ]
M级:约可纠错15%的数据码字( e) ?) \0 u7 _% l T
- f- z8 W( A: J5 ^) T5 f% `; }
Q级:约可纠错25%的数据码字
5 x D; }0 u$ L% t; c% {+ H3 D) F( k: {
H级:约可纠错30%的数据码字
' s7 Y/ K+ a- C: J
, l6 z) @2 z. L/ i) M4 m: n前提条件
0 S2 T. \ }! F( qGD库
/ f2 B, l; Q+ y: R9 {1 f0 R p( }. _- u
一、PHP生成QR CODE9 b" k$ I" P9 `9 |% t* [: g
官网:http://phpqrcode.sourceforge.net/4 w5 s+ R$ x! y, i1 Y
8 L; j7 Z* n6 b下载源码:https://github.com/endroid/qr-code* _ u) H/ t2 h. I/ [
+ I3 P) [+ s3 A% l目录结构: x0 U* [5 B# C. n) ~
P* ~, p1 N4 a- s9 U& @% F$ Y5 w J7 l# g0 G8 G
1、qrcode_create.php
6 T8 R( ~! E/ g$ K0 W7 Tps:生成普通二维码
7 I9 r$ e/ G* y- # t) D+ h/ H2 X5 z5 `
- include_once "./qrcode/phpqrcode.php";/**
$ x) A7 Z3 p( e9 `( m - % H9 A/ \- A- u- c8 Y2 c4 C% A/ b
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径' t' t% a7 @6 J
- 5 [1 e, G( C# Q7 ? i {
- * 在浏览器上直接生成一个二维码(内容为abc)
1 @, Z# F5 L" j& U
: ~ x( W% u, Y o* X- */QRcode::png("abc");+ m; N2 V# Q' w* v( k% ~
- . S! s, t, o5 ], Q/ [1 l
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
% M8 u2 }7 V8 t - & X4 J) m6 \1 t1 M
- * 生成文件到本地
0 }5 w+ m1 `' }" k" L( S# t - 4 k( a: J' d1 c
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印), s4 T! c4 B9 H) \
: _* y% {7 C } ~- * PS:$saveandprint源码的p6参数做了修改
5 Q0 Y' j( @' Z u
( \9 B4 ~# }: |& S8 y4 ^1 v3 p- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);$ T, w- [- U( p7 C' t& S" z
. A2 O% c: s' S ^( p: v/ U) p$ c& n
9 {1 z! |' t& H& }" d! g8 o
复制代码
, z, C% v% c; _' s; s+ v! I) t- i# Z3 ^2、qrcode_logo.php# I ?0 H' |+ G2 J: K$ w) \
ps:生成带Logo的二维码
9 h; Q. y5 O0 q- /**
4 w8 w% w7 e, o
$ s- @- ?- `: \- * Created by PhpStorm., R; a( f# @1 E1 S, d
- 6 S8 M* @2 @& V# k$ {; d* u1 n
- * User: user1 F; h0 g9 t( V3 D/ E
. B/ |* M' ^3 Y% k' a8 W- * Date: 2018/8/16. d. I8 s- M- Y. R& f, x: \; o
' V0 s; K2 Q0 z$ t1 T# a- * Time: 10:43$ l, x1 j L% y2 P
" D& [7 e, ^- {1 s- */include "./qrcode/phpqrcode.php";$txt = "测试内容";6 ` B( e N1 A% V
- 5 R2 `& K4 }% ?4 T; {
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
4 [6 S5 n1 G) t6 F! u4 e
, g; L* _7 d! M! p7 B3 W. a- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是" P* X4 q- u9 L% m
: z D7 w) m l( i6 z5 Q- $margin = 2;//边距
: y% @+ t2 o9 l: {; F
& c, f, R5 Q7 f" j+ j( y: C6 E [- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片- I. j( m( a5 k4 o
- 6 ^: b- E8 m) }$ |9 j h
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
: d9 ^( X8 }3 o" t( n' |! U+ W, s$ _3 E
! S" R; @2 F7 r0 m6 x' U- $QR = $picPathAndName; //已经生成的原始二维码图; u; _8 i: U; J+ v9 ?/ e* Z# G) @ N& O
; z1 F/ f7 j' y/ e" W- $Logo = './pic/logo.png';
) _ |' T! y) M$ \
( F- t" d& p, ~2 E) D# \& Q- $Logo_re = './pic/test_logo.png'; % p7 B, ]. h$ M' ^- |6 ^
- 1 ]! V+ J; S" K: G$ Q9 J/ [# S
- $QR = imagecreatefromstring(file_get_contents($QR));
5 [3 @' C- B/ F' N4 `& n
6 d4 f5 d: `' \- ~6 r0 i% T) M; S' E `- $Logo = imagecreatefromstring(file_get_contents($Logo)); : u8 q$ ?/ B; y2 z6 Z$ b, L
- 0 y6 N+ o0 S _) h' u; ]1 |
- $QR_width = imagesx($QR); //二维码图片宽度: S) A4 \- K3 U* h
- ! W) }6 Z e) v& G, o
- $QR_height = imagesy($QR); //二维码图片高度
- y. W6 ^. Y/ g- D
! Q3 _4 O5 S/ R1 P- $logo_width = imagesx($Logo); //logo图片宽度2 ] t7 H: H8 D3 @
5 c+ G! t/ u9 C* y8 e5 V3 o+ z- $logo_height = imagesy($Logo); //logo图片高度
; E+ E: P& Z3 j: E# a - ' u/ n: Q, z7 e7 b2 W
- $logo_qr_width = $QR_width / 5;
0 b/ V7 V) J3 i
# v, {; N3 C9 t; d6 k/ H- E- $scale = $logo_width / $logo_qr_width;
8 k( l) [0 h* w8 ]! X - " ?) M# e2 i8 }
- $logo_qr_height = $logo_height / $scale; . m6 | z% m9 O. Y
- ) B3 Y; e3 X k
- $from_width = ($QR_width - $logo_qr_width) / 2; ]' x* m5 Q. s! V
* j. |/ N0 R% j/ }9 X8 y- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); 3 X2 e5 a1 e' _0 G$ ?( v7 }& F
- 8 S$ V+ S8 J" Q1 F; ~( |
- //输出图片
* }" X4 o' r. m
5 y3 O9 K1 N- O5 U! ^; Q1 F- imagepng($QR, $Logo_re);5 y X' c: Y9 Q
% l# w0 S( x6 a" t- }
' ^% }9 @" z6 w( T" L! P5 f - 9 `2 j7 `, A0 N# @# B2 Q5 ]9 }/ X) S
7 q4 P" [; T( Z, x, l
复制代码 3、qrcode_vcard.php (生成电子签名)
6 x$ m1 N# K) W7 R3 W2 C" W8 y) |# Q* l* }$ o
vCard格式:https://zh.wikipedia.org/wiki/VCard
: _; P( B- {8 C) D8 Q# O d* E! M4 @" h/ W
6 R' ?8 F2 a; ^* p5 G% Y F- * Created by PhpStorm.
7 r& ^7 E& w+ w+ x* w
1 r: W# h0 L7 N! S; M6 S- * User: user- o+ z& b% j! F8 w: z' R0 L
- ; A" o' x. v5 q1 B+ S
- * Date: 2018/8/154 c& ]1 l' {) a& D5 S h
- " {9 C! D* B, l* v- v" }
- * Time: 23:00
& W' \5 s. M8 N. J - " ]5 n+ H, j$ s- P
- */require_once "./qrcode/phpqrcode.php";/**0 c, A7 _* D$ i; [0 B: g$ y, Z
2 ^+ g5 b& c6 p3 }+ [- * 生成电子签名5 o0 X" E( V9 G6 W, H6 N
6 X% y1 Q6 J- B6 o- * PS;使用微信扫描二维码
- j4 v) C! y: ^# n - 6 F! D0 z% v6 j# _( ^
- */$content = 'BEGIN:VCARD' . "\n";//起始标志: _* r. R/ Y l. `( o) ]# ^
9 i c- f& w- R0 J B" Q- $content .= 'VERSION:2.1' . "\n";//当前版本
* H1 {) Z4 o4 ^6 S3 G - ) m) q$ H3 V- P; x: z
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名7 X* Q5 H$ ~# K' S9 @( r/ T) B4 q
/ M; O7 u4 c- X1 L' }- }5 r3 h- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称6 [7 [9 O$ D( ]
- . b: Q8 U% o) Q }# ~. {. f
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
. E, H Y9 d1 l, Y$ |
2 r+ D" W; ~/ [# M* Z) l- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
! Y( D0 X# h, |, @* D3 v5 L" k
8 w* I4 E: }, Y) C0 {0 Z* C- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
( c, H- Z( _+ S' g: {7 {
; D: T' ~# A4 a7 E- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
% t, h" P. N* L* A- W& f3 f
1 r) M2 r4 Q X0 }2 T# v- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
, O2 d/ l: c1 _+ O, m
0 L3 @# E$ @/ M( ?* z- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
: z- c6 `+ k% ~. g - . n) C6 Q% @' n* t8 l* y
- $content .= 'URL:www.baidu.com' . "\n";//个人主页
, X$ M5 o! p* r J - ( K _7 x& r3 @4 H& d
- $content .= 'END:VCARD' . "\n";//结束标志
' E/ K* F0 P, j
, [- k+ Q/ C# t) ^ |1 t- QRcode::png($content);" w: e2 F5 p- `' T4 A. J
+ d- _7 Y! E V- P& l# F
5 d# c# q8 D5 \# {
复制代码 . M! [2 V; V! g
相关文章推荐:
6 E/ ]. S3 {* C1.PHP生成微信二维码实例
% D# l$ ~7 X/ |; }1 K! n: q% I2.php网址转换生成二维码
! G! B7 V9 |% {) X6 b1 Y相关视频推荐:" ~. Z7 W$ E7 o3 s' f0 u
1.独孤九贱(4)_PHP视频教程
3 `5 _# ?# T1 o4 ]* p5 r3 C7 I3 X二、JQUERY生成QR CODE
: i) R$ `0 Q$ G; h# q源码地址:https://github.com/jeromeetienne/jquery-qrcode( A' c! f& }2 k( J
. c+ z. C" f# E9 Y+ U
jquery_create.php
' z. t( }8 T' H, c: s/ T* V- i1 F7 l. f
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
7 H) K5 y6 C4 T) B6 E1 m& B7 D _三、PHP识别二维码' [' R% ^6 u& `) l: H" e
1、方法一: L6 c' N' T. u6 ~3 T
环境需求,安装如下扩展
: @* p! \: q% k6 I4 n9 ~; Z/ [- ImageMagick
# L1 @2 T5 r. H/ [, r( B- zbar. |3 j+ I( o) \# T5 o
- php-zbarcode- s- A7 b, i$ r0 c. _7 x
; B3 n# ~! u" a' I( q
2、方法二
* o$ ~9 q, T- ?7 pPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
( j- I* T% C3 G7 q+ LqrReader类:https://github.com/baagee/php_QrReader/ b- C* }0 J+ I9 I# W# Y. x
! T& A: \* l, X$ c. H- 0 t- Q9 w) [) W! f
- $qrcode = new QrReader('./test_logo.png'); //图片路径
' [' Y7 s5 D! Y l- S - * f& _9 R/ o6 s* U9 W& V, F
- $text = $qrcode->text(); //返回识别后的文本 ?" a. B2 q6 r# y
/ \8 s. X9 ^8 E: h7 P- echo $text;' I5 n1 ^3 C! W
- 4 ]7 G3 c8 C3 J0 H( L
: z6 E, v& u. H W! A
复制代码
7 P1 p+ V: {0 J# N链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
3 z8 _/ m( R! C" N1 t) \) y8 B
2 J& T- R; O: Z7 A. k4 I4 ^- C) @0 q6 S2 K" G. s# ^0 w
?2 v6 k0 S8 U$ {5 H$ j( D. L7 B
& \" I% M( b6 j- G
4 D% U- a0 D4 Z* L1 S9 s" x7 }2 s( n6 G
" @% H9 O" Q$ L3 f
! |3 R, j& V6 Y- x; J) Z7 b% b* g0 S6 c
|
|