管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
) |, d% d4 Y6 j M---------------------------------------------------------------------------------------------------
+ l" t7 X" x* Z, {$ ^0 J& A) W二维码的分类
- o' O* p# Q0 P线性堆叠式二维码
% b( ^( t; ~' E1 z& d6 c+ c( H1 P. e
矩阵式二维码
/ ?# G8 C2 w$ I: d( M Q, H" O" `
/ O8 v% N8 g; \二维码的优缺点
: o4 \5 y/ t# I0 g. Q W5 @优点
- c. j/ [' v$ l信息容量大
# n" l9 ^( b' d& ~- R) K z- \+ G5 T# q" Q3 C( ?
编码范围广
; z0 O+ M2 j; ^. o* S) @# c Y; g' W- z
0 B j3 K: |$ V容错能力强' F4 M& N8 d3 O- a
4 l& O3 [( M/ i0 P5 w
译码可靠性高
+ H6 H3 ~$ T |+ a) T: r( b) V$ Y" D
, f/ O( J) D( y" e5 S可引入加密措施
' b9 |* t% J) ?+ Z& c
8 ~( X5 S( M5 G: g! d- T成本低,易制作
0 u5 g* N# i. l; g. @* j
" Z! P8 c8 p1 T" R缺点
) H8 x( B' G5 ~4 r9 t% E6 v4 y9 d二维码技术成为手机病毒、钓鱼网站传播的新渠道
M- {7 r Y" P& R" F6 [: R7 M& Z
- o z% A+ f3 |信息泄密
$ ~+ J( M( g* t0 _! h4 D+ ?% k% T9 _
% }3 L/ _% G- n7 ~目前流行的三大国际标准# |: _: F/ R+ F% p0 |5 k# O) K1 q7 Z
PDF417:不支持中文& B9 k0 E3 K# `1 a3 x
/ N e/ @) R2 T& ~) w# HDM:专利未公开,需支付专利费用
9 B {/ i& m+ W: Z6 c
, C5 f% T. r" vQR CODE:专利公开,支持中文
4 v4 b9 D% V# B U" B
! z- B; L$ D; W A: GQR CODE 纠错能力
9 p4 e0 h! ^+ jL级:约可纠错7%的数据码字- |' Z! ?6 I+ }. z# D; f
. I& b1 l- d# w' U/ P" ]( C
M级:约可纠错15%的数据码字: f/ @" P3 E# ?5 }+ o9 m
. ?# e, V4 `7 k6 y5 J# F
Q级:约可纠错25%的数据码字
! H o# I( I! k( ~. {& v
1 i k. V d& D4 n2 ~, vH级:约可纠错30%的数据码字
0 h }, t' E2 v+ _, N6 o2 v9 I/ g9 ^+ h4 q6 H( T+ ]* W& [# J/ Z2 J
前提条件2 @0 @* i! F2 ^ t4 W
GD库- v% `! h/ a6 K& p: Q: d: a
) D+ r( o0 `) ?" c, l8 s$ t一、PHP生成QR CODE
3 i. Z* x9 k5 R! A官网:http://phpqrcode.sourceforge.net/
$ Y4 e- f1 E( E' m# n) S6 n4 O0 \! g2 }
下载源码:https://github.com/endroid/qr-code
" y* j2 b$ i7 H6 m& R n: \! \; s/ d, E- Y' W
目录结构4 M( C2 {9 L2 Q4 I) C
- K5 c0 {: T0 N7 i! H* _6 ~0 U% w% P. M6 N* q: @
1、qrcode_create.php7 ?, e8 G; b+ O6 l; M
ps:生成普通二维码) C+ ]8 `; p1 D0 B8 ]0 E. W
2 y, c T! F. L7 o. r- include_once "./qrcode/phpqrcode.php";/**
0 P4 D' @$ n2 K6 @3 p2 h# ^* C
3 @ g/ B( s7 [: U- w1 U( K- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
* E ^8 ~ k; x: a w
* [1 ? @) m' k9 w% N6 k- * 在浏览器上直接生成一个二维码(内容为abc) g3 n$ ?) Q% D& Y% |% L
- ! ]5 a# ]# U N
- */QRcode::png("abc");) x T/ }$ m! [1 N
- ; t) U" h/ Q* U3 ]2 U; ]
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
2 Q6 X& ]" |6 U# P - ) Y7 T" A( t1 P0 b9 @: N
- * 生成文件到本地7 Z8 K) }: M: I/ w: d6 {
; ]8 P% F: a% G! c4 M$ P- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
2 P9 f R5 V0 l5 [, R - ! B2 b2 {$ U( y* n& j
- * PS:$saveandprint源码的p6参数做了修改
, Z, H9 C" n7 U( j0 x. p" K+ l
X& w1 X7 s% }/ L; O2 ?1 N- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
* A% j b1 K/ @$ y
$ M9 E$ U$ ^; _6 X8 A, S# \
6 D# F" u# `6 r8 K
复制代码 4 W2 g8 h7 e2 h: F/ m8 _1 a
2、qrcode_logo.php9 { l8 i! |# U
ps:生成带Logo的二维码- ( R2 x8 H# O' S$ m3 q4 @ T
- /**' W+ n. O# ]. P( H( E6 T9 j
- ! |2 J g9 ]9 n: Y) w5 R- f g( {
- * Created by PhpStorm.3 j% j: E0 R& [" t+ Y8 [
- I& [+ x. h% T# z( R6 h
- * User: user
1 I1 L) l% {% Y0 Z$ V$ W# m. H - 2 x5 d- O/ _9 r
- * Date: 2018/8/16' A1 R3 p( ^. q4 H5 }
- : j; m0 w S& p0 O. b3 h
- * Time: 10:434 _' E" P$ _6 N' @% K. B7 Z
, d: }. i) I2 I$ S- */include "./qrcode/phpqrcode.php";$txt = "测试内容";
h5 E; K1 {1 C5 h! ~. \$ {
0 d( R$ {, {/ F( |: C' z, \0 ^- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
5 h% J t: V9 }9 t
6 I$ K( m2 L1 G9 l- D6 r- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
4 e! S8 Y1 [( m& {; a( } - " m6 W' H- E2 _
- $margin = 2;//边距: S& o+ q. H3 y
- 9 y( _5 e5 S$ x9 Y
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片 T0 ]! m; K1 k5 a E/ ]
- * V5 ?4 m- l2 M: O1 }9 H* _/ O
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ 2 u- Z$ {+ B/ z. @5 |( d0 A
% b9 ?" @* g/ ^- $QR = $picPathAndName; //已经生成的原始二维码图! i; O% \ f+ M% ]5 [
6 M- j$ r2 _# K0 g% o5 Y- {- $Logo = './pic/logo.png';
0 G1 b: N) c; [- t& e - 4 }% K2 E( d. |, {5 h- u$ a: ^7 X
- $Logo_re = './pic/test_logo.png'; . k8 l* X r- v3 H/ U
- ) S* \8 B* Z1 G4 [+ u' y% V1 F3 N
- $QR = imagecreatefromstring(file_get_contents($QR)); " d- l3 ?) K9 N5 J
2 q3 ~2 U$ m1 X; {- $Logo = imagecreatefromstring(file_get_contents($Logo)); 6 [* {+ ^6 Y3 l; M, ~
2 @ H9 ~1 U! H9 i) A$ Q. G6 J- B- $QR_width = imagesx($QR); //二维码图片宽度
7 k8 g( S+ i7 E) N - 8 o8 @" A3 C: } Q
- $QR_height = imagesy($QR); //二维码图片高度
, s. C; I$ A) O. {2 Z/ k
4 I* ^' M3 E5 w0 P2 k8 G) s- $logo_width = imagesx($Logo); //logo图片宽度& L, T0 Q+ Z& i
; z0 ?, l# U+ B& I6 Q+ D0 w7 ~- $logo_height = imagesy($Logo); //logo图片高度3 {' R1 b! n2 x* s) r
9 A: D( t# h& p4 T- W. a0 s$ c- $logo_qr_width = $QR_width / 5; . H4 k' j& k$ K" C+ M% f' V
- ; L% A$ d9 c3 A1 O* w- B
- $scale = $logo_width / $logo_qr_width;
# k2 D. i, T* y6 a! u" a- A
! L# Q! w7 d+ Q' {, V- $logo_qr_height = $logo_height / $scale; " a& }9 L+ R L2 Y
! S) ?5 L1 f# k; C$ F4 `6 h- $from_width = ($QR_width - $logo_qr_width) / 2;
$ S% |5 _: z' q' B& c
1 d1 I- ~1 V/ m3 K1 e- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
: \6 R8 T9 \! G% ~7 s, _. a - 9 P# i4 x g O. R4 r2 o
- //输出图片
1 g$ @- c1 T/ v$ H* Y! P" Q' e1 x
2 l5 B" ?% R+ K- imagepng($QR, $Logo_re);$ n; l( }2 u4 @' Q
- ) `5 o8 e" `5 j6 w5 W; t& ~
- }
3 c6 u3 w3 @3 _$ ~/ @, M - ! A# y$ d; M5 h; Z
- . i9 M1 p/ Y" a% F+ y/ @6 r
复制代码 3、qrcode_vcard.php (生成电子签名)7 B- U2 D' ^/ Q" a) d
/ A4 C# S& m; _3 XvCard格式:https://zh.wikipedia.org/wiki/VCard
! L. p5 g" R# G& H# U0 j
& x* n+ R! X7 s o& P3 D$ `' `
. E7 L1 g& V2 }" U: [- * Created by PhpStorm.
" d* d l% F' r# c4 a3 e% A" N - + ]/ G/ H. m, V( x7 ~ u3 K S1 E
- * User: user3 b% u; D% c4 ]6 _
- - d1 p" }1 l. b4 }
- * Date: 2018/8/15
8 |- X0 }% [/ [6 Z. i6 a - , m' m/ Q# [% A3 S! f
- * Time: 23:00) M, q; O: n1 Y7 r9 ]1 M9 j
0 o$ T) h X7 n' k/ j8 N% @6 f( _- */require_once "./qrcode/phpqrcode.php";/**2 T* A) J, x, ~, W+ r! {! R1 l4 _
- + t7 W _- i2 w) Q8 m2 ?
- * 生成电子签名
$ f4 H( j8 x( o2 E! g+ T/ H
1 w- J6 }) {. t3 b! E& L- * PS;使用微信扫描二维码* H* t/ N4 l# |% l9 j1 ^& I: G
# ], k$ ~1 ]! {4 b; b2 n" x- */$content = 'BEGIN:VCARD' . "\n";//起始标志
! U$ I5 Q, m& }0 D* V" S% } - 9 f& t7 R; o- R6 E( F
- $content .= 'VERSION:2.1' . "\n";//当前版本
1 l7 F# T! { [9 r3 ~3 W- ^
7 X; r8 `% |! x- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名2 P' l: Z* U4 j- [1 K% Z$ k
- ) s8 y7 B4 H$ {+ j! @1 ^
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
8 Y) y6 q7 p5 u4 o. s - ! V) P5 H" s6 Z7 t4 c' ]
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位0 k; {+ V1 i. e1 X8 y
- : V* i6 J( l5 v' ~6 v, L' D
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
1 Q# t4 T# ]1 }: I2 V3 f0 @, \. w - ( }& Y6 [1 Z- I0 c: u9 Q
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址; a2 p( {; x( B" b" l3 i* p
' _5 \$ @3 }5 U" r- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)$ s0 e3 O/ P" K& x/ S
/ T& D7 @8 y9 {& q# ~3 \- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话. k1 W$ W+ R5 _( X- E" [
- c @+ V1 w( d( e1 T& h
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
! B' H* H. q( i5 D. [; [1 L& @0 c& _
. z& v# o3 b6 p6 D2 M! e- $content .= 'URL:www.baidu.com' . "\n";//个人主页2 \" H y5 N: A6 Z$ x. p( s
5 O& v7 o0 v9 g" y" T- $content .= 'END:VCARD' . "\n";//结束标志0 A* M! p- v/ T( D( q e* I( d
+ ^# r: ]$ ~7 y' p9 |0 M- QRcode::png($content);0 l. o8 q" S8 G- w! _
- k7 G4 Y* a" a% S" m7 I7 S
5 S* f0 `5 M& j% s
复制代码 * x) R0 t! G& m) F, B8 b
相关文章推荐:
0 B( Y4 D( L' v( ~& W: D7 P1.PHP生成微信二维码实例
; {4 [1 k4 g' ?2.php网址转换生成二维码# H( F! ~' R) N2 ^
相关视频推荐:& R0 w( i0 G; i! i& N
1.独孤九贱(4)_PHP视频教程1 [5 M" |0 `& f; q7 l9 b# `/ z
二、JQUERY生成QR CODE/ l5 } {9 b1 e; y; A4 |
源码地址:https://github.com/jeromeetienne/jquery-qrcode$ ~( V( X$ d& O! R
7 i2 O1 ^: S5 }. ajquery_create.php2 V4 L% O j. v3 [3 M. \, P e0 ^6 _
/ k2 B4 C5 J6 x( r r4 K- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
! [. t9 I0 @5 n+ l& p三、PHP识别二维码
6 a* g! W4 o( U1、方法一
' ^2 u& [ C) |环境需求,安装如下扩展& g5 ~/ ^+ i1 I
- ImageMagick
9 s5 U" V7 c8 D. H+ [; M- zbar
9 r/ t0 ~# u. A) J2 i# f- php-zbarcode, Y! R6 J" @9 z8 e2 p" `/ u$ U/ L( e
$ `/ w4 S& W, Z5 s- \2、方法二8 O; i z. F0 o7 Q2 `8 N
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以% a- u4 Z! M# [1 E
qrReader类:https://github.com/baagee/php_QrReader. u5 w; t* p, H3 {8 K1 j; v/ R
& U: r( E m8 u; q( t# M {+ \
$ J& J. ]6 `& P- $qrcode = new QrReader('./test_logo.png'); //图片路径/ A5 X7 ? z; O
9 h. b: f" c; V- }- $text = $qrcode->text(); //返回识别后的文本
* E8 O; {8 \2 M6 _# A; i+ }
" H0 g7 q9 z( H l8 h( f, H- echo $text;
' i+ c& {0 n3 l6 ?1 {' k# {0 I( n - 5 c X/ @' a- ~" \, [+ h
4 K1 J# Y8 O! f( ?5 b# m7 }4 o
复制代码
4 \* |9 e2 i, d: i$ h- N# @链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7( x( f) I( s" X' C
( i+ @2 u6 g+ S6 T
) e% ]8 r. Q! o u/ r
+ [9 c4 l% B3 Y# S. g8 {; K7 H3 A( X
% W% h0 B. u/ H! I7 `
+ m# _3 b- x! f
% `' t) u' Q- u0 t8 T8 z3 P3 O9 r/ S: p. R: f( Q ]% j3 ]
9 x& ~: O/ w8 m+ g |
|