管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
7 \* e$ L! o6 P---------------------------------------------------------------------------------------------------3 x+ T* ]1 x' i! l2 K0 e
二维码的分类% h+ }2 s# G' D- v
线性堆叠式二维码
- z! g( c! o+ v& M" B4 O1 \$ L9 `+ q3 n
矩阵式二维码
; k: n5 b6 v1 \4 j$ @
V" d) u9 G& \% i6 x" g二维码的优缺点
0 n. ~2 O ^9 V) @ Q优点) p/ O$ P8 P3 g. G. \4 E0 f, B
信息容量大# w: P8 c9 m& A( ?( a/ ?( e
( h+ d9 |5 V3 M
编码范围广
" r8 t3 s W/ t- r+ `5 o" F& i
8 K$ G* g- x- @0 o容错能力强
8 f: j% k! J; H) l9 T! [1 T# M% ]/ t' D/ l* s0 b' o
译码可靠性高
# j8 B+ B* J$ a& D. v Q4 C* }
3 m. o2 J: w: h9 x; K: ?可引入加密措施9 F) h |! Z9 n1 M- r. D1 u3 a
) i/ p: ?! S! h3 e: |
成本低,易制作
/ R0 e5 |& g; n% s2 O
& @8 y3 \" z5 ]1 ]% d2 [7 y+ i缺点
9 H1 U) s* P9 } o2 ?0 X* q二维码技术成为手机病毒、钓鱼网站传播的新渠道
+ b' ]8 L6 T2 `4 I, F
" U& D. |# t* y0 X2 _信息泄密
) j7 Z, ^- _2 o2 n6 j/ U
' ~6 I! v, }& H) Z e% f$ q6 K目前流行的三大国际标准: ]$ |, e* [# t+ R7 Y U
PDF417:不支持中文
" K9 C% s# U- N5 ^+ d1 i) Z/ I" P1 ?4 ^! ~- `. g [
DM:专利未公开,需支付专利费用$ N( j* D: r, o3 ~+ R) C, ]# d0 {
( E( M# x$ s" w8 d' E
QR CODE:专利公开,支持中文
1 G5 t, ?( m- M2 \3 q1 Y* B0 }
4 I! T+ F# `1 c' e# |$ pQR CODE 纠错能力/ M8 x# X& e0 A, n5 T7 ]( u
L级:约可纠错7%的数据码字 O) K" T. ~- {8 A, S% |. H
' {' w' O, P& j: iM级:约可纠错15%的数据码字
~) q! G7 M: ]5 P5 O
2 ]0 K- `& Q! a" J# N. g( g! j7 Q* FQ级:约可纠错25%的数据码字5 P( p3 Q5 t1 P1 X5 a& L
1 m ?# W( O+ Y, QH级:约可纠错30%的数据码字
; [; ^, D( \+ j. Q( G2 B5 v( N$ m2 E1 Q8 l" A; Q* q
前提条件 |1 ^- H; U! B- F+ g; e
GD库5 F% h5 C# o( L; R/ p9 x; ~
# R+ l8 P4 i; t5 Z0 A* b一、PHP生成QR CODE
% R9 N' n: u; ^6 K官网:http://phpqrcode.sourceforge.net// t, \ j7 f- T! `4 @5 s, u
% h1 h! \2 D) F' H下载源码:https://github.com/endroid/qr-code6 u4 v1 U2 W1 _9 o, D
0 F. ~0 W, S" o3 n5 Q/ Z% P目录结构
) }9 I% P6 ]6 e
8 U6 i3 e8 y! ] K/ C) T
9 \" C s& h6 X( T( ^
1、qrcode_create.php
8 U) _ |8 y. a& z( B, |ps:生成普通二维码5 m$ M0 O& C ]6 x
- 7 n; A$ J$ @, L& L- | f) @5 l
- include_once "./qrcode/phpqrcode.php";/**" ?. `" C5 ?8 G
: S8 v- w( R# f1 b- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径; k/ a. H, C0 R2 s) @" j9 q# ?
5 _$ {6 T [+ O" P, E/ H2 G- * 在浏览器上直接生成一个二维码(内容为abc)
. o6 f! o- Z2 x/ ~ - # }' _1 x9 B% _9 F+ Q5 x
- */QRcode::png("abc");
1 z! b# j- b5 r1 x4 N
, I% ]) W; r8 O4 E- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**1 F* a: ]2 @: `( r
$ U! v; g, Q; E; e- a- * 生成文件到本地8 E& w9 X3 }+ T0 m- V
- ! ~& E. x1 f# m( L9 H
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印) w* Z: T$ h/ J( v% P
# o+ G9 [$ \* U- R( T- * PS:$saveandprint源码的p6参数做了修改
+ H0 v1 Z8 h5 m - # ^) G$ U i0 i$ \
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false); o& c0 a* y( r# S# |; B/ R
- ' _4 `6 J% j$ M3 w
8 B' C2 w5 ]6 G7 E' u5 ], P+ T
复制代码 9 z/ X6 i% ~1 G2 t# w
2、qrcode_logo.php
2 k+ E) R" s& I$ t2 k) ips:生成带Logo的二维码- " l# \/ H. P" S4 F+ o! v
- /**
' \; u" {: Q' \ L k; ^) i - ]5 a* ?, J/ B7 R; x; M
- * Created by PhpStorm.! t j( t& c4 ]* u/ b* Z
- 9 Z, ]' _' L- V. u
- * User: user
/ a; e! D2 j- K, v) x& x" @. Y
/ N" A$ ]0 B; G& C/ U- * Date: 2018/8/16) ~' v0 z7 B+ N f# d$ g' I4 M
- ! t: i: D4 s% t7 F( A5 `
- * Time: 10:43
! {8 X. Y/ O' u" J3 B* D
% h3 Q3 V; a5 l# P- */include "./qrcode/phpqrcode.php";$txt = "测试内容";
0 F* \/ b3 U) F" W) S8 j - [) N6 |4 `: q" B. Y* ?) B
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称- s0 a7 e7 ]6 K! C
- 1 W" a( s" h) |: W0 ~
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是0 f0 w! L% v( p! f6 [/ p
- 7 \! H q, L+ U1 W& D# P
- $margin = 2;//边距1 ?: U0 W$ \' q+ O& F
3 {& d: _0 R+ L- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片. T, m- F2 S% X2 t D
. t0 ^# r$ J( h4 G# J/ E! Y- b6 M- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ 7 X0 O' l- G9 }/ |7 C5 B+ p) w1 l9 }
- ; Z( Z1 ?0 B6 N
- $QR = $picPathAndName; //已经生成的原始二维码图
, X7 W) q: g% q - % l0 u( {$ g2 ^4 ^. ]0 W( J9 a% P! z
- $Logo = './pic/logo.png'; 8 K& ]: f) X8 r/ B; s& d6 w. C: n3 {
- ' z, U! n$ i! ?
- $Logo_re = './pic/test_logo.png'; 8 X! n# [1 c) |" g; F: K' ?
3 ?# o! }- Q2 Q5 F, _- $QR = imagecreatefromstring(file_get_contents($QR)); ( s, w S6 m* ~$ h2 d
8 z$ T- I7 z+ K f* l! H9 z F- $Logo = imagecreatefromstring(file_get_contents($Logo));
. G' m1 b4 T. k, ~8 ]* h2 s1 k
4 y0 k* f) Y h, C& f6 ~" o2 O% {( M- $QR_width = imagesx($QR); //二维码图片宽度: A8 Q& m A( X) T4 c# D
- s- N* w6 s" Q- t r- p
- $QR_height = imagesy($QR); //二维码图片高度
3 s- a, f6 l' \9 o( }$ P7 @2 n$ \ - 7 H4 D# ]% x* \- g$ n* b. J |
- $logo_width = imagesx($Logo); //logo图片宽度
! S( r* |) [& A: S/ R: e' S1 j; u - : E) m @+ n8 ?1 y" u) s
- $logo_height = imagesy($Logo); //logo图片高度# k3 o! @. Q9 Q
- 7 l& ?, @& O M9 C
- $logo_qr_width = $QR_width / 5;
9 d1 _- T; ?- s) V8 q7 X1 }
2 @: Q) A& f7 V. R$ U6 p2 T( O- $scale = $logo_width / $logo_qr_width;
) W. R; s* O1 Z) d9 e9 g
$ O$ F8 u) V; L0 a, s/ C+ u: e- S- $logo_qr_height = $logo_height / $scale; 3 Q: Z0 K3 T1 a
1 M0 p6 e6 a! u- $from_width = ($QR_width - $logo_qr_width) / 2;
1 V$ L( r/ ]6 B5 T6 ]8 u; y* \# V - " r5 {8 `) r9 a' q }. d8 d' y" g
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); . A& q6 g9 V' f9 H6 m
- ) [" h, m: B; r
- //输出图片
5 s" O+ ~6 T; }. |; e - $ z5 \4 _1 @6 B6 B
- imagepng($QR, $Logo_re);
t# m* f) R9 c" \ - : S0 d! D! u) `( g: f7 A
- }
+ H, L, ^9 W. o4 Z- O
! W( H) B8 ?. k) [- , c+ a1 C/ H" r
复制代码 3、qrcode_vcard.php (生成电子签名)1 o* ^4 ]3 C' @
) z' e, a8 W( s; k% N- T
vCard格式:https://zh.wikipedia.org/wiki/VCard, L/ f2 D2 P! k: X: B* u; O
8 u. B: l' L0 I6 [0 Z# U7 m0 @
; c0 `( X* L5 Y r+ l" x- * Created by PhpStorm.% K- h J- A- z/ L
- ' w) F+ a% |1 `0 D. U# j# H* n
- * User: user
4 s, U8 n9 H9 u - 1 q2 M4 \ n, Z( s
- * Date: 2018/8/15
* l s& u( A- L' G6 F8 V - . Q1 @ z) L+ M2 R3 K% h7 O
- * Time: 23:00
3 P' ]4 b, j. p
: q# U% n8 t4 g- @! C3 E! g- */require_once "./qrcode/phpqrcode.php";/**
! G( p% p1 W& ?$ k8 Y, A4 n% _+ j
: C; ]3 S! m5 _- ]- * 生成电子签名
; q0 l0 Q; e% N3 M0 L! l2 r
! Y& W! j9 l+ {+ P, t' k- * PS;使用微信扫描二维码4 l# e7 E4 y2 o% G
- 3 u' v2 l, `8 x- h
- */$content = 'BEGIN:VCARD' . "\n";//起始标志, {6 e" ]4 P" Q
- ( L) M2 [& g) }. z+ s
- $content .= 'VERSION:2.1' . "\n";//当前版本
; c7 s9 i/ N/ h
8 @* g2 ]+ Y. z3 p. @* {& A$ j- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
6 ~4 }5 N7 w, v) G - ' g) }" r. B8 I. c
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称7 H, U$ `, ~% J4 c, ^. g( L% a' V
' W1 U/ b4 `$ g. u! [* t/ X- $content .= 'TITLE:PHP研发程序员' . "\n";//职位/ J3 ?1 p A* b4 F
( j( R6 p/ X2 E0 T- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
9 ?# ]2 O8 b9 U7 R: N: v# K
- _' R, M( e' E. A5 @" G- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
& I% R$ I4 c6 M- ~ - 8 I( O0 M; p9 w9 U
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
# r5 i3 g, D; z3 i3 p8 d8 a1 _( F
E: {" D; N" f) y" Q- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
9 r" I4 d3 z8 o2 Y8 I [1 z$ n# Y - - L# r/ Y3 K% Y2 I" T
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱2 ?9 ^1 h1 _) E! W
# B5 V/ x. h5 `! x/ H4 x" {- $content .= 'URL:www.baidu.com' . "\n";//个人主页
! Q% i1 ^+ V# n2 d+ c5 t - ( V4 Y# l5 B6 V% A" Z4 ^
- $content .= 'END:VCARD' . "\n";//结束标志
. A' e& c! V5 _: ^+ k. X2 [ - ) l- T$ G% j; @ S) K
- QRcode::png($content);$ D1 q# P& p$ G! a4 M0 v. a; {
- : p7 h% w, P' X% L% k
+ d; t! ~% f$ n0 e7 h& |) k
复制代码 - y" d+ b7 l1 \- R" ~7 [5 K/ L
相关文章推荐:- ~* |- W' w4 c% n% q" `0 e
1.PHP生成微信二维码实例9 B: M2 x2 _6 w) E' u$ |
2.php网址转换生成二维码: A: M7 a9 H( X" y7 _( L" j) Z
相关视频推荐:
+ P5 i# F2 ]1 w. c9 J1.独孤九贱(4)_PHP视频教程
" V, c' `9 P' C6 Q" S5 \二、JQUERY生成QR CODE4 ~, P, H* T' V" i$ u
源码地址:https://github.com/jeromeetienne/jquery-qrcode
" V! X: l/ c2 ?! x. j
' ]- J9 C) \, Q) U6 U/ Ijquery_create.php. w* F7 f6 T* A9 o' o
+ b/ l4 X6 O' M7 F7 F/ _4 W+ l; z; f- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 8 J. k: c3 V& G7 ~" w3 R0 M! } H
三、PHP识别二维码
2 Z' P+ u2 ]. z1、方法一
6 n+ P/ E! ^ o7 o环境需求,安装如下扩展4 n8 ~4 v8 r3 k3 G: `1 E
- ImageMagick
% u$ U' w4 r( e) q& `: d- zbar
0 F) H' G3 T+ v% G. a9 }; }0 J- ^- php-zbarcode
5 t% C7 H1 ~# l) G; F% [8 P& ^: C
: _: b7 S1 o% S- o+ s2、方法二
8 l- c: G( q, r9 \: R) IPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以( @/ U. @2 [4 W' X0 }1 D+ W
qrReader类:https://github.com/baagee/php_QrReader
, r3 J: V2 Z: ^& C7 M) i, x; m( s4 |
3 ?9 }: @7 f( I- \' w- $qrcode = new QrReader('./test_logo.png'); //图片路径
# \) `! \0 H. @. o- O+ A6 n - e! V9 D) E3 ?
- $text = $qrcode->text(); //返回识别后的文本: X* O; _: t5 h2 f2 K
9 s2 p: I3 Y' s; Q9 C( L9 l- echo $text;/ m% K Y- f7 d& |9 P+ c
) k A1 @: F/ T8 {% a- " \( e' k4 f+ `! _. v/ i
复制代码
2 K9 p- l: x' o) Q链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
: T M6 b2 W8 A& n; X4 Q+ S. X: @8 d7 B& ?) F
0 A, M7 x' i" m+ [# |1 U1 X0 j# M6 g: E0 W; A: p
4 ^# O }2 t! f( R5 H) G
2 O8 ]9 z0 z( k! ?* i, c; O: ]' H- b% b: { ? o" D
8 j6 g+ s. ]( k- _% D, [' {& e3 p, I! |$ l: W5 K3 |& B5 f. D
0 ]7 d' r" [# h7 N
|
|