管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。; w4 q/ v: e! P% z) T7 p
---------------------------------------------------------------------------------------------------3 f3 {# k: _+ ^$ q; V3 E6 x I
二维码的分类
5 P6 w0 A4 Q! t: F4 o线性堆叠式二维码
N' R" X) u' N X
6 U& `% f8 d* g$ t/ m' J矩阵式二维码' h1 t5 U2 u) P( a! H. R
" O7 q& J+ M }! M二维码的优缺点
& _+ X0 |+ j! w D6 f0 T# i优点9 |1 `! g, p" A% M# K& k! Y- q' F7 o* j
信息容量大
5 N: v) F; t$ y# N; T" e8 o. j1 O
9 I% t& h4 U7 \# M编码范围广; I% v4 _/ t. u4 K3 ^. h
; N9 l) S9 B/ _; ^8 O o
容错能力强3 j: j9 P; E' }% A
, y4 @3 G- l: M+ y- |& S8 S% `译码可靠性高
* E1 r) s( ~- m
7 v" D0 q3 D* Z: ?. Q可引入加密措施 Y2 M4 n4 u0 s# i$ Q, w' Q
4 B3 b5 Z; y* s* S m$ K) y N
成本低,易制作
) |. |5 k% i: `0 k( Y4 X
& w5 ]8 Z: ]9 s缺点
: y* T% `+ R" n. N二维码技术成为手机病毒、钓鱼网站传播的新渠道
( F m {0 {; w( O% a# P! }' k! W
信息泄密
; h7 c1 E* L. B+ C8 f
( f* v5 [( R _ F目前流行的三大国际标准
) z- V2 T: R& rPDF417:不支持中文
1 c/ j: d7 V0 [4 }. G7 n6 s8 b+ D: w2 z9 \7 b
DM:专利未公开,需支付专利费用! v) P9 J8 F5 S; \1 r
: \/ e3 h- _9 n9 B9 S$ T: D
QR CODE:专利公开,支持中文
. V& E8 N& z* M5 w: g
1 {: }7 I2 }( l+ l+ K9 l8 r3 A5 NQR CODE 纠错能力. m" A( U( L, w
L级:约可纠错7%的数据码字
, q! i# Q2 d* R4 y) K8 D8 d f* _( [0 T$ E6 n
M级:约可纠错15%的数据码字
) ]+ V) o3 \+ p- N+ V0 B
4 o V/ E' \ mQ级:约可纠错25%的数据码字
% J# y1 z, T/ E( R# U4 z& s
7 w b! L9 B2 r. w4 U- D7 IH级:约可纠错30%的数据码字; E5 T s$ Z$ N- p6 I+ U( T# r
0 c: [' z7 }1 [4 o
前提条件
1 }8 }$ @* ^. v. M5 i4 l3 T! VGD库+ m- `) V! p6 S; s2 e. w- Q
: q% W" W; D, f: ]+ ?2 Z( b
一、PHP生成QR CODE
/ B: C4 L+ X4 U) e5 @2 q官网:http://phpqrcode.sourceforge.net/) B! `2 {5 r2 n* C9 |% L0 r
+ u& y% p6 `7 c6 @9 c8 {' Q下载源码:https://github.com/endroid/qr-code! |% C0 R! l6 I, ^
) T/ a- N; ~. v r y2 _* k# H8 | b
目录结构9 |6 @! J, B1 w$ C( k. Y, R
) {6 y, `- [' f* h6 X' K. F7 K4 @9 d/ K5 t" B! e0 j
1、qrcode_create.php& O4 v- l. i5 W# l+ n
ps:生成普通二维码
: W; R* l* h L `5 x+ `9 ~' h- " I! I+ s: P- A) ^ s$ L. a
- include_once "./qrcode/phpqrcode.php";/**
`: A: Q3 k. w+ ^
& _# [0 t% j" W7 O- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
0 Z- d$ l* h3 Q - 7 @4 v @) J, g, ?
- * 在浏览器上直接生成一个二维码(内容为abc)
1 x1 F; i1 m1 a" d - # ~9 Q& ?* F1 g/ k
- */QRcode::png("abc");
! Y0 [/ G7 _% [6 D }2 p4 G - 9 Z. S( A* d7 I8 g" l9 T
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**5 _2 q, g; h/ Q+ b; i
- + O! P, J* r j. _3 B8 l5 K
- * 生成文件到本地
3 _# \4 v, N3 S( i) M
+ I1 ^# D3 s" n8 s, d# q7 A4 f8 s- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)/ R( u6 M }+ N5 J
- - a& b$ H& v7 M# g P! v
- * PS:$saveandprint源码的p6参数做了修改
( b* W3 W' [- j8 l8 U, \8 R - 2 R- T) }' j4 n4 ?' F6 C1 P6 D# h
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
$ @1 D+ S% p/ m, W6 `2 `% V# z7 d - / K" q- u/ }2 f7 t- A$ u3 L
- / u/ u! q: r) c
复制代码 6 C4 u, ?% i3 L3 O+ `" T
2、qrcode_logo.php4 H$ G8 W0 X# n0 W- |
ps:生成带Logo的二维码
7 ]7 h( u' }' }2 Q! z3 o- /**% J& l& c: |4 f, \
6 q& s" V8 x2 R* _) x- * Created by PhpStorm.3 B$ {1 s. Y+ H% W, X
! f" q& o$ c+ u% x$ {+ O- * User: user
; v. h$ H& U* W' V+ N5 ~1 {" s
9 X# `2 ]5 ~" ]; D- * Date: 2018/8/16
5 e- T. T1 J" p; m* t e - 0 a/ O% T! P" x4 m& X+ ^
- * Time: 10:437 R3 N$ ~0 t K0 Q& K& X/ @6 D: \
- & ]4 r1 A, x% ~* u2 Z/ `
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";
' A0 Q; ?0 l7 O7 ?% `; I - , M+ p% @# {$ n: H! ~
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称% n: L) ?8 p5 u& ]3 C* h/ r
- ) g9 F( V4 j- `- A- X
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
3 ?4 ^' [ z( g; ]. A
9 l# T2 ` {. t' L' Y& H6 h- $margin = 2;//边距% L$ e, X& i V; H& J/ g
; ]& F2 t- i0 O9 `4 W; @" N- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片( O* S. n! Z9 g- b" s1 r; s
" @% Z2 M# |) ^: k- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ & H/ S' V2 H4 U% _0 A8 S! h
- # A z# w& V% @' @5 n( x6 o
- $QR = $picPathAndName; //已经生成的原始二维码图( l3 C3 X" ~. D) p6 T1 S
- 2 H( m( |( z% B' W
- $Logo = './pic/logo.png'; 2 U; x4 _2 n S l* T
, i: d9 b5 X3 ?$ `2 h- $Logo_re = './pic/test_logo.png'; ( T x# t" K$ U! ?
- 2 |) s& | A V" w. V
- $QR = imagecreatefromstring(file_get_contents($QR));
4 q8 B. l& G+ ]: L1 C3 y
2 C" R1 u# Q; R/ r& q: E$ n- G% ?. k- $Logo = imagecreatefromstring(file_get_contents($Logo));
' o( e% G+ c4 k' K% O. U. H
4 N( q p0 b+ H! m- $QR_width = imagesx($QR); //二维码图片宽度: S/ f, A9 L% F8 ?/ e- q) g2 F
; Y1 U) v- ?/ K2 x- $QR_height = imagesy($QR); //二维码图片高度5 s7 ^$ v ? [
- # S; D! c3 w1 L# f) V( }
- $logo_width = imagesx($Logo); //logo图片宽度) _5 \ t) J4 t7 ~* ?
- " ?1 s, u# i: V3 X
- $logo_height = imagesy($Logo); //logo图片高度, o) h% ] q/ W8 i) Q. Y
9 s2 Z/ I! H( ]6 X: ]- $logo_qr_width = $QR_width / 5; ; V6 @) o6 C! e! v; W- [3 x. q6 r7 d
, B5 x9 s) H! m6 Z+ k- $scale = $logo_width / $logo_qr_width; + r9 X" D# h" `5 a4 K8 I" h
- & U5 j( V1 J) c. P8 } K. n
- $logo_qr_height = $logo_height / $scale; # O0 W' {' ^" [% Y6 w: e/ R
- . A' f$ }$ L: @1 e2 ^1 c! `
- $from_width = ($QR_width - $logo_qr_width) / 2;; P7 K9 u% W2 m( O+ @( B
- & T4 i1 w' |! D
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); 0 v) k! b" [8 E/ ~2 l
2 X& K& ]2 u4 ^* T3 b7 a- //输出图片
3 i% }% n# A# I6 [2 o8 t6 d7 p - 3 x: K# {# h6 z0 r
- imagepng($QR, $Logo_re);
" i, C% J: Q4 E
1 l3 G; j. z3 ?( ~& X, {) O- }( T8 C* W' N3 b/ v0 N, f& V
- 0 }0 E7 t2 y d
- . z- B& j+ b0 l3 q7 j
复制代码 3、qrcode_vcard.php (生成电子签名): p, X& d( F$ n- S4 C
5 r! |: v# c5 F3 c! @
vCard格式:https://zh.wikipedia.org/wiki/VCard! S! J' @2 h j. R. V
2 `6 C3 L: U/ i# O
# @$ S& [- u5 t6 \0 |6 q6 ?- * Created by PhpStorm.
3 s* \9 E3 w! p- ~ - . L) @1 d0 i) F
- * User: user
$ S2 e3 \ O$ b! I6 U( S: S) L/ P: @ - 3 U2 e6 ]! H* B8 k1 g
- * Date: 2018/8/156 G0 m4 {) ]5 Q4 f! [
- & U, g- ~2 l; {7 c* E, B$ k
- * Time: 23:004 f9 Z* c0 G! Z- X6 o( K! V& O3 x
- ' e5 ?% ]) w9 C( K5 _3 e
- */require_once "./qrcode/phpqrcode.php";/**) U1 o3 p9 E* T) _3 |7 l5 ~. J- n
- z) h' a- Q1 \( |2 L' j2 K
- * 生成电子签名) h+ c: T& s7 K
- r/ N! A0 ^) a" n g- * PS;使用微信扫描二维码- j* _) S: N* f/ ^$ y% q* D
- , W, f4 {) s) g3 f: [/ {" N$ C6 |
- */$content = 'BEGIN:VCARD' . "\n";//起始标志3 p+ n' m8 d# t; q2 X
2 e. l* e# ]" L. g2 [- $content .= 'VERSION:2.1' . "\n";//当前版本2 `5 M% `8 p- {$ s5 v! j
- $ c7 W3 \, o2 _: E& H! K
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名6 g2 O, I/ {# e: E7 @$ x) r
4 J( [1 W, k8 [0 y" z- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
' u" M0 f$ g$ n) i - ) ?0 i; b! T% z2 d% J, e$ K% |
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
- N) I4 R& p; B% s" Y8 Q. p- [
# \! v# {4 K6 W& w1 `6 ?- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话, s) D( Z; A; W; p+ K+ ~
0 m. H' B- A0 d- C# y A- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
. a7 N/ i- Z! o5 b" A
7 Z' Z8 k" l$ j$ U- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)% z( u8 O9 ^3 @/ k: O/ \
- 7 N- L* G/ C' G
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
1 A7 J% g/ U+ @5 [) z - : e% b3 i( \% j0 x# k0 e: T; e* n0 W
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱7 D$ N$ e/ P0 t# J6 R
- 2 m6 a* t- U# K8 v
- $content .= 'URL:www.baidu.com' . "\n";//个人主页4 d. I# U A+ \2 z4 A/ a. c0 }
- - L. X5 M9 x3 K3 N0 x
- $content .= 'END:VCARD' . "\n";//结束标志) I% g0 z( S; g/ c
8 W7 A" |* i- x$ [5 F) ]- QRcode::png($content);8 Q# [9 A) j, f0 r% a* w
- X- b* m% y a) P' M5 }
- & u. |4 F$ U9 J" V
复制代码 [4 u$ ?+ K5 |8 `, S
相关文章推荐:& y' ?9 k' k+ o5 l: i+ r0 A
1.PHP生成微信二维码实例' H; ?0 U" J. U' V
2.php网址转换生成二维码
. J; a) F& Z/ P0 g: z% _相关视频推荐:
; H# H, t- {: e1.独孤九贱(4)_PHP视频教程
0 }: y% q$ D2 [/ ]' y8 l9 ~二、JQUERY生成QR CODE; q$ v$ e3 E- ^4 ]5 q
源码地址:https://github.com/jeromeetienne/jquery-qrcode
& j# I. }2 w/ O" C! ?$ ?7 v4 c" h, S5 O# [$ @/ l8 ~; W" Y$ U
jquery_create.php
+ L8 g/ o/ T+ U3 E* j' ]: e+ k0 N2 E2 Q+ K0 y) h' p9 ~
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
, J* K, `0 ]& K# u/ S+ A三、PHP识别二维码9 J8 ] N- ?2 W7 K6 k4 @( p" w
1、方法一( ]! T) F) X) V7 B/ I3 h
环境需求,安装如下扩展
* R; B, v9 B& k" e- ImageMagick
* M, Q0 \: g F; [, _1 q# _- zbar
, i" @0 U' x9 |% j* H- php-zbarcode
6 t) D1 ?) I* D# _: H* K9 u
5 U! ]- q8 w! X! R5 t2、方法二8 V3 |9 ]6 D3 d3 P% C' G3 G
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以% r' v. e* b( K9 M; {& @7 r
qrReader类:https://github.com/baagee/php_QrReader0 s" M+ n! G2 d5 E
9 E8 W- Q- t. ^ ?. ^% I+ g1 v( `
0 s8 Z7 X9 y6 A: t! H- $qrcode = new QrReader('./test_logo.png'); //图片路径
0 l, P# k7 M' }/ z - & T( y7 T! j) C) A5 F/ N
- $text = $qrcode->text(); //返回识别后的文本
8 P+ K$ d+ T# q3 |, X4 y
( h3 z" d0 D0 n1 O' N k; r R ~( e6 |- echo $text;
9 A; Z/ t1 r! V3 U& E
# G: W9 T9 |4 p$ U0 V5 O5 |/ q+ j
. e3 _0 f6 _; n
复制代码
8 E. Q+ j8 `# Z& C: q/ K! v: ~链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
9 k) r2 a; n4 ^, o( E. X- |: {
8 [3 {( X F. L# ^- s4 O- L- `( X! K: p7 D5 M9 \+ E2 l
2 [" w* R0 j4 l5 e- O' c) B. U# w" E, [+ w2 H% M7 J
+ V# }2 i; q+ [4 Y( s9 t
) p5 h. K9 }, X2 z$ o( A2 ^( l. U9 D8 E3 Y5 o/ W
5 r; [9 d. l' i/ R+ x
1 P# X" E" i' M) B3 T
|
|