管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
; G) K4 y2 H4 [0 b* Z! l---------------------------------------------------------------------------------------------------) J: l. @3 j) p' k/ I; `: V% a! u
二维码的分类. c% U" X/ J$ y8 \3 R( G' M2 G( L' _
线性堆叠式二维码
3 Q- o8 J# v/ ?0 v9 K6 F0 X5 ~" \/ V% B* O
矩阵式二维码! H) l' {9 A$ c, T4 I, |& o3 Q/ M
9 u" l6 D/ v* ?1 Z二维码的优缺点" h1 }" ]3 S0 e, {8 W- w% X3 k+ p# n
优点' j O$ T4 ~$ m) O$ c- J `5 C2 d1 _
信息容量大) t5 F' \/ v, Y4 R1 U' M
0 v u& b" G0 l! O7 H; }/ R编码范围广
9 X% I1 X) { F! ?0 G- U3 c" O2 `; c2 p, R' K8 ]8 r
容错能力强% _2 y- C& P1 D
) w: r5 I: J% P( `1 [+ i' K译码可靠性高
& J* K7 C5 }( W
9 H3 R! ^* k9 T1 }- n可引入加密措施
2 l- Y7 g0 G; F, y6 O
$ x) c* P# e, F' J8 j2 J) W成本低,易制作. l# c o. T' p* I9 ^! b
! t! c8 B& \' f! W4 j( |) B
缺点: L! ~. g6 m. G& b
二维码技术成为手机病毒、钓鱼网站传播的新渠道
6 Q* t Z# H4 x5 @1 b+ @$ P
5 g# U: R/ s+ [# z" s5 ^9 J信息泄密4 A# Q& E+ i6 m# O4 t
) p- f% ]0 r8 Q% T
目前流行的三大国际标准- m; a. L; V1 q- M5 U0 P$ ?2 N
PDF417:不支持中文, w$ Z! \/ G @! J! |7 Y
* ~( k+ R! g7 x( r+ SDM:专利未公开,需支付专利费用. x% [' A$ u2 q8 y5 k/ ]0 a7 r0 ?
/ J7 }+ H; l# E$ s: e2 M; L
QR CODE:专利公开,支持中文! n+ P/ t7 |* C& \: M3 f
& V( i7 \( ?7 v4 @: Y4 DQR CODE 纠错能力
5 j# G M2 R' {/ dL级:约可纠错7%的数据码字" d: e0 L/ w2 v9 j; q6 Y" {
" _! i$ C* u; h5 T- W% t2 [) H" c; C9 n
M级:约可纠错15%的数据码字
, ?3 {; E. |# L) [6 n: ~8 ~
9 k- b6 c9 Z2 Y8 h' r/ z( wQ级:约可纠错25%的数据码字
+ M" a; w# i, @
6 ^! R0 g* T3 @4 G, l( Y9 dH级:约可纠错30%的数据码字
0 [ I7 M( ?, j5 K! ~' C
N9 _2 D( g" G6 a k7 X前提条件
/ B( {5 _, B- V v% N2 EGD库
% ~6 Q* f* P$ m/ m6 ~( {9 Z
& r: O7 h" D, M F: {! w$ v' T一、PHP生成QR CODE
) Y# ]4 K/ B+ |6 v7 v, K0 y( o$ o官网:http://phpqrcode.sourceforge.net/: Y# v. j( h2 c1 s
+ c& f F( d! w
下载源码:https://github.com/endroid/qr-code- e$ _' J- V+ M. P7 D& i
- W6 |: R2 l0 x: K( n
目录结构
' ~. A$ l* b7 X/ s% O ~
# Y+ r$ k$ o; T4 M8 d! G' @! V- f+ s7 ^
1、qrcode_create.php
1 U; k9 [1 D# c4 R/ mps:生成普通二维码( l; o) i/ u3 H) N1 L' P
e& X: ^( P: d0 Q3 s; c. f1 O- include_once "./qrcode/phpqrcode.php";/**% O) o1 g& D. v; G; H+ j/ }1 M
3 E8 W6 r0 J x& x% `) I2 t- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
f: D9 i z/ h6 d& f+ d- w& [
0 k/ q1 v: `; g7 N- L% @! _- * 在浏览器上直接生成一个二维码(内容为abc)
' {! ?2 d* {2 B! @* ~9 T$ L - + u u2 r" ^- [& D& y, J
- */QRcode::png("abc"); Q* l# d0 D$ r \$ ]( j0 g
$ D6 d+ L# C$ q4 b% ]- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/** H# b, H; f/ T& q, t! w' _
- |" B; `" D" A% q1 r- * 生成文件到本地, U7 ~5 E8 ^- H3 s
: W L2 v W! |- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
# t$ c# ~ s8 j& M6 {
' b; I/ a+ v7 c9 E/ [- * PS:$saveandprint源码的p6参数做了修改! o! j: T+ Q/ @- u* q8 _8 W
- , d- a5 s, m3 r. J( }6 v+ o
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);( Y$ W$ X- N, m6 W% V9 X$ }
- 2 s6 |6 ^4 K) S: r/ r, Q4 }
0 f6 @8 f) ^: e4 r, k
复制代码 ( V4 @, |0 h- Y/ D# D7 R
2、qrcode_logo.php6 A' w: n( ?3 n" _# q
ps:生成带Logo的二维码- ' ?0 S5 }& U$ S- z/ @7 F1 a$ z
- /**
- x! Q) g6 v) M; I$ x( M - 6 A! K$ D+ D8 f( a2 g
- * Created by PhpStorm.4 ^+ i- n& G- d Q0 S& i$ [2 B
% F- {5 c0 `" J$ N, j$ W/ F: `- * User: user
' R: c- U/ Y* J. b - # {9 n( {9 c' u! @& T6 C- F
- * Date: 2018/8/16: `+ Q. p; h( F# u7 H4 G( W
- - a& M' l7 I4 o6 v/ x
- * Time: 10:43
1 \, Z- t3 Z3 B% L2 v
9 A- q$ R' J0 e- */include "./qrcode/phpqrcode.php";$txt = "测试内容";' D% a6 |) H+ H6 h- X# G
5 _# j8 w# Y8 e( H L- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
) I: H. M- a5 M" m, g6 x, A - 1 I; c) F& x, S7 F% g6 N7 N6 A
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是4 g: d3 n8 ^3 z" g
- 2 O8 I) |+ f+ Z! |. Y
- $margin = 2;//边距. h9 \* h4 `/ s. c i
, b* d4 r7 }0 I9 Y- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片1 H& W$ r& X# ?
" l& x# F4 f U! t h- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ ) P, P. H( g# w, o- Y* p& U
0 l' x6 F6 }4 o2 Q* }5 |- $QR = $picPathAndName; //已经生成的原始二维码图
3 V* w: o( i$ d1 [; Y1 U
! B3 A7 y6 _4 J, o- $Logo = './pic/logo.png';
4 O' {( |0 _. z1 s0 ^6 ~: `' @
3 p) l, ~9 c6 j" v$ M3 C$ @- $Logo_re = './pic/test_logo.png'; $ S8 W9 @2 n9 S
- - M4 G" o6 R" x0 p9 ?
- $QR = imagecreatefromstring(file_get_contents($QR)); 5 I) f$ Y/ |* a9 F$ g8 d# N
( r j$ Y) }3 r K. T- $Logo = imagecreatefromstring(file_get_contents($Logo)); 5 S+ l9 E1 M/ ~) }9 j$ {5 Y
- 5 ?" s. T; O$ r9 k: y7 m( _! P
- $QR_width = imagesx($QR); //二维码图片宽度
& ^6 v/ o+ b! C3 D8 b6 k! d1 T - 5 _7 s$ X+ u2 v& |9 S" a; X
- $QR_height = imagesy($QR); //二维码图片高度' G, q& u5 g/ B: _7 I
3 W( w' J9 l4 b" W3 g+ D( C- $logo_width = imagesx($Logo); //logo图片宽度5 ]3 d! E. \; I7 M9 Q4 h
- * f5 ~) H4 ^: E$ K
- $logo_height = imagesy($Logo); //logo图片高度
7 u6 c) [2 e$ R# r! B, |' j8 j
; g1 A! J% c0 k; I2 q1 n- $logo_qr_width = $QR_width / 5; 6 G0 `1 Y! }1 P9 e. M; ^7 E/ D0 A
( G7 M) b! W" V6 g7 [) y, L' U- $scale = $logo_width / $logo_qr_width; 0 ?7 m: e2 m' ~: r# y& t- U0 y5 k
- % T) m* w) G1 N* [- r: @
- $logo_qr_height = $logo_height / $scale;
6 R- s; H" E) S- D; [
5 t2 s" c$ }: h1 Q$ `! s {0 h# u& A- $from_width = ($QR_width - $logo_qr_width) / 2;5 l' m: E" Z0 }' h
1 G5 D/ |; H& g" ?' w% E8 Q- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
( o! F/ v4 x- ^2 _ - % i8 {9 j" L& h( P$ q7 R
- //输出图片
8 Q# s8 r# p& K0 I8 @9 l - $ r) G0 m" R: T, R. M# N& {+ T
- imagepng($QR, $Logo_re);9 ?3 F0 S/ ~1 b: V% b, c0 ^# A
- : W# N; y( P- l7 I& X2 |1 U# D
- }( V5 b# ?: L' u! ]6 b+ P
; L( ?; l3 e+ g" Y9 Q0 z+ _# {
$ K& O2 {! T% |" l% \+ ]
复制代码 3、qrcode_vcard.php (生成电子签名)
/ g7 }- s# v6 Q
- V! I, t" b5 s! v$ dvCard格式:https://zh.wikipedia.org/wiki/VCard
x( D( {7 ^: B
7 o2 U1 w u" A/ }9 a- * D1 M. \3 d; ^0 }' \$ j
- * Created by PhpStorm.+ Y1 E% }. Y. _- D
2 r. H0 b; N# S) y5 [+ w* @- * User: user
. q% h( C( z5 k$ r O+ D
' W W1 A2 g3 ^% @; D" {7 V% |2 T- * Date: 2018/8/15
' Z* c& V8 m; \! o$ c0 y. x
2 _$ h) l! Q4 N# M" d* P- * Time: 23:00
1 W. @ @! V. m! t/ y$ y; t - ) O' C7 T! w! _" H4 R9 o7 M
- */require_once "./qrcode/phpqrcode.php";/**9 x+ s* | h/ y$ ?% v
- 6 R9 f: n3 r* \- T7 c# G6 G
- * 生成电子签名
4 d9 |1 J, X$ H# ]( D$ l; c - 3 Z4 O' G4 W. o- F/ U1 I
- * PS;使用微信扫描二维码
! N1 y% D7 ]( e
# K( i0 J/ Y9 }- */$content = 'BEGIN:VCARD' . "\n";//起始标志 M& M! U! K8 i2 E P: s/ D* r( C* |
: Z( u0 {- t6 u! m) ]- $content .= 'VERSION:2.1' . "\n";//当前版本
# Q1 |9 Z5 t+ {8 t r
" l, O( t. H P1 p1 [5 ^3 y, e- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名: D+ C8 Q) N+ K* n7 ~: X
- # @; z9 B, e3 H3 q, Z! v- v, ]
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称6 R# S6 s6 x- A" e/ ~
- , O2 G. E! N i0 ^/ K8 t- A
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位! c* g# x/ g5 |8 y0 u
0 H9 n' K5 M' t- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
( l+ D* Y$ ^# X- y1 K3 V* ^ - 5 I, n, v! v# z
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址, R: V* a0 c$ @+ s6 Y4 I% T
0 u+ B# U1 e. ~1 F. ?. e% q* \: }- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
/ l8 u9 b) b# H) Z6 ^ - ; V/ Q" h* ]) x/ k0 [* R
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
" ?/ c# n1 V& Y
v+ K9 @! b' ` K3 M- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
+ A: G- ?9 Y2 i: S5 a3 ?' ] - 1 d) m* K) I- N6 V: b/ ?5 w! v6 z5 G
- $content .= 'URL:www.baidu.com' . "\n";//个人主页
% m- x& S' N3 u2 _2 c( @& d" G) n - & r! K* f" `, o
- $content .= 'END:VCARD' . "\n";//结束标志
9 ^2 ]' }7 \$ F- D
( I7 s) R2 f$ h# I6 [/ F/ G5 L" i( }- QRcode::png($content);4 ~' a; U- J1 i8 S
9 l: S' K& d$ I" f
* k( c! e2 z: R
复制代码 @! ?% W' P7 Y
相关文章推荐:# b2 T* k1 d8 n7 a+ W
1.PHP生成微信二维码实例
! n8 k) W9 {" Z5 D2 x$ x2.php网址转换生成二维码
8 k2 z, B1 j6 H相关视频推荐:: l6 D2 c& c5 l+ r
1.独孤九贱(4)_PHP视频教程
+ b9 O U! Z; M* \# M* J+ g4 c二、JQUERY生成QR CODE
6 X$ h& s% a8 G% h, S源码地址:https://github.com/jeromeetienne/jquery-qrcode
! Z! n S& c5 a- t( l0 z) p4 f8 u
. H* _/ | Z4 F$ u8 u0 _. bjquery_create.php
2 v( W' |+ }2 `6 b" T' i
* A' W( C5 R" n2 b/ j8 _$ L5 B) W- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
. M' F) i8 r( {" {6 L三、PHP识别二维码
4 c& u2 ~0 \+ O; a+ o' J! X1、方法一6 A# h: L& Y( y: o3 `+ `% T& D5 R. L
环境需求,安装如下扩展( t- @3 ?2 w2 W7 @
- ImageMagick4 d$ k& o Q8 S/ G, t
- zbar: E6 Z+ {. F1 b8 d, _8 `' v N
- php-zbarcode
% J% b9 g- S7 i3 { }) F& W
& c4 H" i+ W; L8 J C8 N2、方法二* A( J) E4 h% |8 R$ s. R4 o
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以7 j' A q1 k2 z% o2 f- N
qrReader类:https://github.com/baagee/php_QrReader
; H$ d+ X7 w% s: ~3 N
. g5 e' U( y- \3 e" X% o: F- + w5 v6 |5 h% k6 ~- Y
- $qrcode = new QrReader('./test_logo.png'); //图片路径
6 N S8 y2 y% D0 `8 S1 S. G
. ?& o8 H/ R' I* i* z# u- $text = $qrcode->text(); //返回识别后的文本
- B' Z- t) w' P1 j) u4 ]0 l
( [* m" I, x" e" N* C( r q8 p- echo $text;. d. Z$ H/ j L% Q
- 4 S5 d! Q/ T0 T' c/ R5 v: \
- 3 ^5 Q; G, X7 j% J
复制代码
: h" e6 L) k' w- D( e4 @# B链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7* b9 ?! p! L' |% {! D* g" ^
8 ]5 M6 N* \9 ^! J9 c
5 R; S" k6 U+ O: I1 i4 o
u$ b) s; ^. ^; e. f [) I. M4 _ a0 d+ ?
# [: o5 k+ J0 L5 U6 N" d
" \1 j( q: {2 @8 [: F, k. Z& }/ v
( }$ Y* f' S: ^+ ?
9 S! X# ? V( ~' t4 ?( e |
|