管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
9 v- O% c9 G, X! L3 W( ?---------------------------------------------------------------------------------------------------& T& c3 J. q* I! Z4 d
二维码的分类- ^3 C/ n. s" V) P& n
线性堆叠式二维码
! b& ~) z- m. U2 o, p! a
: y, p' V4 Y, R ` w/ u" p! |矩阵式二维码5 {% V9 |! x# |& Y2 `& I6 P( A2 X
; I3 u/ N! c* ]. X: R( m- \1 M; n
二维码的优缺点. j: ?3 w, C# m) o& w
优点6 d4 r: \. q7 I$ c; E
信息容量大
& q0 T; N) M+ i7 c" W2 V
% G/ z7 \& P, j, E7 j v编码范围广
# B9 X. ]/ O. d* i- a. T; d- h' F' G5 G, T" y) i; T, H
容错能力强/ S' q: R; P( f8 u
4 ?. g0 z% v1 b: K5 j- m: Q7 C译码可靠性高
8 V6 t& u* k) [" _; N% ~. g& |5 w+ b
可引入加密措施
( n0 c$ _. @2 ~2 N! a4 T# ~6 l: Z3 M- m) Z5 u
成本低,易制作* ^# b: \! L0 E, s& q1 F% n
* \- @: s O2 P% U& J- N1 x缺点
k, j7 F/ {7 g" V/ P9 `二维码技术成为手机病毒、钓鱼网站传播的新渠道
) ?& Z4 d- A: i/ t: K" [
! L9 D, ?5 b$ {信息泄密
9 ]$ z' z6 d% P- j) J. ^# H6 n2 e! @2 h
8 j3 G+ o: _+ e' b8 i8 b- C目前流行的三大国际标准
% h* S7 i* j# c9 A% XPDF417:不支持中文2 z# N) [0 t6 N& q. w$ n
+ P) l5 n1 z0 w2 b$ Y, ]2 ~1 o
DM:专利未公开,需支付专利费用
( k% O# Z7 p$ f7 G
' ^' o+ Q( |# o9 J' pQR CODE:专利公开,支持中文
( _. C" t& f( Z; l
4 M4 e2 l' |* }- w; hQR CODE 纠错能力: _6 J: p ^0 E
L级:约可纠错7%的数据码字
( e7 s( f) X4 }6 P1 E
' C# S3 Q! e8 y& z G9 z% tM级:约可纠错15%的数据码字
* A9 j. N) l2 U: a# W/ t- M
+ `4 A; `9 e6 T+ W7 cQ级:约可纠错25%的数据码字
4 }" V( k# o% R/ Y. S! x) }* f F: C1 \& ^. d4 K2 j
H级:约可纠错30%的数据码字
A# ^. ^# h( r6 p6 ~6 F1 h* ~5 E% E, s
前提条件* I8 i. H9 q( j: [8 B) k: \. }
GD库( Z3 o4 P2 D! ~, J0 x1 a2 i0 b
- c! g/ L* A* A一、PHP生成QR CODE
. x% ^( |$ g, o" ?0 i官网:http://phpqrcode.sourceforge.net/
) e1 m2 \: j3 n% o; W" v- ~" ^# B; n) Q) `
下载源码:https://github.com/endroid/qr-code5 W- B, m/ K% E7 {6 j7 `
9 R( t" b5 n+ ^# S目录结构1 c0 |% Y3 I1 y
- B5 x) o/ q, @
- U) x1 e7 q( E) s5 h% t! b1、qrcode_create.php
& @/ M0 P- T3 @' Sps:生成普通二维码& N' s- A* y0 u! y& p- U
3 O; H- D+ X0 B9 r X2 R/ Z' G2 x3 i- include_once "./qrcode/phpqrcode.php";/**
y5 g: Q4 s# J, I1 D" |
7 L/ d) x9 T" c+ W, C- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径 F/ R2 a: S- f7 |2 V+ u- {1 q
- # V8 `3 M# x8 G, g, u
- * 在浏览器上直接生成一个二维码(内容为abc) M' h+ F8 h% G/ F
- d' P* a; E; U& A9 l+ L: k- */QRcode::png("abc");
. u( _. U* {/ W: M9 P - 2 K* p+ g# W- l' j
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/*** o! a0 O. V r# Z
) p' r& ^) g8 _* ?( x, K- * 生成文件到本地* U; ]8 P% ^, M8 m( y9 f# B: W- s6 u
. K- `3 \, o) B1 S% R- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
' G1 p" g3 n4 R2 m0 [2 R0 Y
5 o4 D) M$ R5 k# f3 l- * PS:$saveandprint源码的p6参数做了修改- _" {! w% E/ m
5 V% p. A6 x' `1 x. i( x1 {- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
: F3 a! C' @! G$ K - - U, j: n6 e3 p) k
- ! t) A0 v8 ?" N3 O
复制代码
8 k y5 y+ ~# P6 K( G( `2、qrcode_logo.php" c6 W8 w; w$ L+ Q. ]3 D4 i: s6 j5 y
ps:生成带Logo的二维码
6 @6 G0 a2 \* p" a2 \4 U+ g8 P- /**% x7 f* w* o/ Q; W6 f( K
* T7 X5 d7 a9 S; {- * Created by PhpStorm.
/ {4 Z; ~9 R1 Z4 T; w9 W* ? - ! E; ^3 X0 s1 l) H$ Y
- * User: user
4 G- }9 ~& P' M0 j: D% X) R - * S& u v- a8 f
- * Date: 2018/8/16
' P0 M* X7 V! G' M! a% P - d h4 Y3 e+ A! B" \( ^2 @
- * Time: 10:43
' n7 L( m! q. U7 o9 g) j& ~2 A - ; J p1 ?3 B! Q: k/ Q9 Q
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";! D) ?6 b6 w. n) L" L2 c
- % b$ q0 I b' }% H" N
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
" B( L4 ~6 |0 m; \' e - : A( |' b: i2 a) J* y1 O
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是2 e, r$ D. g3 i' h7 v
/ i9 u; {2 d& p+ c1 \! c- $margin = 2;//边距# k; x7 V4 A$ p' K
- ) e) Q2 l ]. e; t2 O4 M) w
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
9 e A0 O! l$ ~( e2 P - 5 b: l) w- u. y2 t. A: x
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
( H$ _! |% p9 I3 ^$ O) w- S - * z$ F. \6 e2 Z1 { c
- $QR = $picPathAndName; //已经生成的原始二维码图
/ y% a2 f! Y2 q, m' E4 o
' i# ]2 D/ Q" e: o( K- A- $Logo = './pic/logo.png'; # T) Q8 x0 r1 w, r
- ! j& d* H# b# [$ `0 }4 r% w% `" B+ P
- $Logo_re = './pic/test_logo.png';
2 p( S& N9 b1 B4 p e
+ J" {6 ]8 n B- $QR = imagecreatefromstring(file_get_contents($QR));
5 y- n: O- ]: D7 A: y1 y
! w a u% w' F/ Z3 w- z& g/ S- $Logo = imagecreatefromstring(file_get_contents($Logo));
0 m& \# \0 R" t0 e' i F* @8 N
2 n) t' I9 h4 u- e4 g$ c- $QR_width = imagesx($QR); //二维码图片宽度4 O- D4 Y' s7 N# d
- + E0 [: H. Z" b- h7 j
- $QR_height = imagesy($QR); //二维码图片高度
! x; q+ G2 e% x! Z - ' _) \% r8 D+ B7 D- C$ h+ a( [9 e
- $logo_width = imagesx($Logo); //logo图片宽度6 z' Z/ l% s! {0 {# f
- 1 r) m- d6 @% d" a- c8 o
- $logo_height = imagesy($Logo); //logo图片高度
$ Q/ @) s& H& j: m8 a/ j - 5 z8 A |, y- o' t. z$ z6 s
- $logo_qr_width = $QR_width / 5; % `! d t5 X! ^- A
4 T# |1 Y& u; _1 u s1 W2 J- $scale = $logo_width / $logo_qr_width; " }4 o( ~9 F% k, e( e' w
- $ R. n7 B$ L H/ x1 U/ x: v7 t
- $logo_qr_height = $logo_height / $scale; ' a: a8 z* o, g7 y1 e5 a/ I
6 u% U0 R/ a$ d3 w5 \* G- $from_width = ($QR_width - $logo_qr_width) / 2;! P) s. Z* o% O% A2 q
1 q/ x2 K: y6 _/ Y& b- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
" B$ r, x7 v1 b/ K
3 W$ b# B0 H {" T, L- //输出图片
5 Y B3 |8 h, w8 F: @( r! s - 6 [! R1 B6 J Y4 z0 {; g4 S
- imagepng($QR, $Logo_re);
; Y* J8 g; z2 j1 |- ^ e4 C5 ]
7 u: k2 C% C" j2 b2 n- }& a0 T0 ?/ ~, k; g! W" `) \
- / l( \4 H: Y0 n) d* q+ @
- 0 A6 B; \/ d- _1 w% D9 Z2 |
复制代码 3、qrcode_vcard.php (生成电子签名)
& ^( _ A3 C" s* m, P4 o' j ~- Q/ T0 |7 ^* d
vCard格式:https://zh.wikipedia.org/wiki/VCard0 ~0 o7 I" F) {. P2 M
9 @% [$ T/ F- u8 F% [! p$ M
, B2 x7 Q2 k+ x) v: h/ o- * Created by PhpStorm.
1 f4 e) S" Y- N$ }+ O( x$ ~/ a
6 z) y# N8 i( Y* w8 c- * User: user+ ]2 Q+ L" d* G2 _9 X
- # p1 m3 V0 ]0 i2 h& f
- * Date: 2018/8/15
/ K* J! E/ P' Y! W - , q3 A* j' @* W+ X. F, @
- * Time: 23:00
5 T1 M: q- T# ~! c
- ]& m; l' c1 h# y- */require_once "./qrcode/phpqrcode.php";/**3 @! V7 p- C" [4 @ Z! m$ c( I2 `$ `
- ( H' h: |3 g% d% ?! s7 \7 c
- * 生成电子签名
7 w4 w8 v2 W4 q' N' ` J: ? - , m: J, J! P' I; q/ x
- * PS;使用微信扫描二维码
" q. f5 M \% @9 b8 X# V( U- s
5 \( r0 G2 l5 Y! J. \" R- */$content = 'BEGIN:VCARD' . "\n";//起始标志* _9 u U0 d# w+ s
" B) t) v4 }2 C# S' @2 U- $content .= 'VERSION:2.1' . "\n";//当前版本
2 q) q% R* i1 C" I1 L2 P
8 c' G8 M! j; E% h$ L. o" m3 E- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名8 V% H9 S# K; m, u+ u1 L
4 _- q3 Q; M& ^( \, s- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称7 |8 q& E" h# S3 j9 ^7 i0 Q$ X
5 e, }1 R, B& N# ?! O8 C- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
0 N0 i* t8 e5 N
4 U5 X% H( t6 G6 @- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话# s4 r' [; f) O# I- B1 V
5 q* L. N1 p. u0 K0 ]- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
# q6 ~0 h! @+ \2 c5 [3 q
7 d& B6 H! b+ u" f- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家); a# M9 }& h5 n$ `3 C
+ y" o4 m1 H1 L- }# P- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话. G# X/ j+ j. V9 g2 r
- : v1 B* T; s7 K" R Q. |
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
. w. k% x; G* E5 i0 v3 @' Q, X' f - & f0 f% s# {/ b1 R
- $content .= 'URL:www.baidu.com' . "\n";//个人主页. x; D; T$ y# ]! d/ N
* T" r1 R; ~1 v8 t. d0 A# ?- $content .= 'END:VCARD' . "\n";//结束标志
, i& P* Z' J( q3 p+ p. _$ _ - 0 C, B1 |0 f7 H1 Q
- QRcode::png($content);5 _+ T+ B! G+ N$ K
8 a6 f* y, P5 P0 i. o3 t- ) T) f4 f" F! z+ N6 i s$ z. K) {* d$ M
复制代码 . F* i- z/ p. z( ?0 J
相关文章推荐:0 j3 ]9 w5 @) j, U0 Q
1.PHP生成微信二维码实例
2 H$ T" t6 M( W( Q5 V* B8 e' z2.php网址转换生成二维码
) E$ y, y% v" I, L1 l相关视频推荐:* e- J& F' ]: W3 v
1.独孤九贱(4)_PHP视频教程* P! K; X. m& k5 Q: p
二、JQUERY生成QR CODE. H7 R8 q F6 m1 t) S& u
源码地址:https://github.com/jeromeetienne/jquery-qrcode" O3 u- B& h1 Z% P5 J+ u' U4 ~
% a9 M5 n$ A: ^$ w8 r' @. j5 Fjquery_create.php
# x k. n0 e5 G w- Q/ E7 E' S0 m8 R" A7 Y
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
" H' H" m- e9 k三、PHP识别二维码
w, k- d. X, W2 m0 h( t' I' }1、方法一% O' q* K3 s7 `
环境需求,安装如下扩展
# M6 G# |# l2 o5 d6 Q% I; |- ImageMagick: _) e/ x1 D2 ?( x3 F/ X. n8 y+ H/ J4 D
- zbar
3 Y9 ^8 d. A- a0 s- php-zbarcode
, m5 a) P: ]; ?6 j" O3 r* ^
$ p: p, y" d* w! Z, l, p& d2、方法二( Z* U* ^7 L7 k1 Q& Q1 |
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
0 G; ?. K8 p$ q9 B, A; X9 M5 sqrReader类:https://github.com/baagee/php_QrReader- z& w* f# }7 x! Z
! ]9 |( h4 v. Z" P
0 s6 N. E \& }. [" \3 h6 P- u- $qrcode = new QrReader('./test_logo.png'); //图片路径# |- {+ T; s" k' e7 x
- 7 [) H& c/ K7 {! j4 O9 v
- $text = $qrcode->text(); //返回识别后的文本
+ f6 Z0 ]& L. {1 R$ r/ c. p7 F7 F
/ c6 C' d, O9 z e# L' m- echo $text;% y4 [; ^. ^& Q# C; a) g/ ^) ?# U
- 5 U6 e8 V/ i6 T( _1 E% n* O' v7 W
- 7 O t: e1 g) a' @! t3 o% B
复制代码
8 q* n# T' S- f4 r8 ]3 ]- P% l链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7( Z6 C0 _# o8 Q
C, L% ]% F1 m* L, {
3 g. B+ f v2 d! H! c( a/ i0 ~
* U' x* b: r# T- B6 S
) @1 F7 a u3 L2 ^
0 P" {" P) k1 R8 k9 b
( o5 z9 z, X0 k. ^9 W$ r
6 `9 J: V p9 H# l* t- s) B& g/ g( t# ~% z' K; S1 R( E6 b
% d* V1 `% Z& L' q% W
|
|