管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。2 D8 _" B6 \- A1 f: C
---------------------------------------------------------------------------------------------------
, d0 `" r$ e/ U2 Q二维码的分类
8 v+ Y% F% K3 ~, N5 c线性堆叠式二维码
0 {: ~' J1 q6 \9 P0 Y" [
8 r' O* P3 h, T9 A- {矩阵式二维码' W6 |! M( F9 W7 q
. z( r$ R, T3 {二维码的优缺点" f, ~3 K$ {, c0 S" x1 f4 R# H$ M: Y+ o
优点' S D3 S, [" H1 S" C
信息容量大
( X" G8 I$ B' _% J m5 [
% W0 W; e7 c1 w+ z编码范围广
3 w" [9 D9 {/ w1 ]9 V
1 R8 b& s! m. h) L容错能力强
4 H0 I4 d' U& w
+ N7 R! E5 @5 w Y6 e& m译码可靠性高( v9 F' t6 m; d0 F& d
) T! Y E. f, X4 R) L可引入加密措施
+ T, X, l/ M- ~4 d" M$ V
6 A+ n! T1 X( `% k/ s成本低,易制作
& E' d) z( L; B- D2 ~+ b; e: l& v! u( N* X5 X
缺点
, P. B7 u( v7 E8 M, \& A3 D- D二维码技术成为手机病毒、钓鱼网站传播的新渠道
% @+ `# ]. x7 G5 k9 n+ H3 {1 ?4 L- }0 }
; v, F- T8 F* d! L信息泄密
$ X$ N/ O6 u' w5 i2 j
& a5 B4 L( E* M3 R6 c/ X. l目前流行的三大国际标准
( L% s0 J0 E \5 {PDF417:不支持中文
! q/ e) S) w7 T1 q6 r! D' }9 O) e1 G) @- h. o. v, }
DM:专利未公开,需支付专利费用+ M8 [. a( A* | N$ Q- ^
7 N6 s* a4 i C" } u. c
QR CODE:专利公开,支持中文3 P, W9 t# S: }# q. G# n! m/ f9 ~
& T' l9 z+ W$ z
QR CODE 纠错能力
E7 v: y) F/ a) u& zL级:约可纠错7%的数据码字5 V5 { L x# [$ b3 C S
( m* h/ Q' B1 gM级:约可纠错15%的数据码字6 v2 D& K8 K G5 F8 w9 T2 c" `
2 z3 v; y$ w6 uQ级:约可纠错25%的数据码字- F& h! l! Z( h" F, f1 I
; g4 M h6 g0 vH级:约可纠错30%的数据码字
6 _8 f. O$ a% I( C$ x
# ]( i* _! V$ m0 K% _0 a5 G! w+ ^, m前提条件9 ^4 m$ r y# P" u9 l* B
GD库. v. L3 Q- c3 ^. I$ g; L
7 E5 |% a- M% X( r) q k' }* F一、PHP生成QR CODE3 X( l0 e2 s# \, l+ Q
官网:http://phpqrcode.sourceforge.net/% T6 |8 o- T( Q) q2 G. E: `( n
* H3 Z8 t9 ]# H k; g8 j下载源码:https://github.com/endroid/qr-code
2 U: J# a. U: ]/ n9 _' h) v7 h3 M4 N' u; U
目录结构) o$ b c8 b L% _2 m; ]+ N
/ A- R8 W- O1 C& p' ]) M# U& h G. D- X0 e$ f1 L
1、qrcode_create.php
$ s+ ~8 A2 Q0 e& Gps:生成普通二维码
5 f E* D Z$ ]5 V3 [1 B9 `- 5 W4 n& \& _' A: C+ [0 r
- include_once "./qrcode/phpqrcode.php";/**
3 K6 E# T5 [& p5 Y" j* U - " b9 b& g4 j% J# u( E+ c. i
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
* R: Y: r7 B2 d
0 `' B) `* a9 H. `% M, F- * 在浏览器上直接生成一个二维码(内容为abc)
' w8 Y1 X! [- F7 | - B% |& X0 [; b/ G/ v
- */QRcode::png("abc");- d9 r S. g( e9 p# E; ]# q
- ( w$ P9 k) k5 U9 O8 {
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**+ U* E# I) }) l H y. N. f
- 7 C5 Z+ i" d X l$ N
- * 生成文件到本地4 Y1 {* Y5 m$ v
- # P" D; u9 `" {& v! F
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)8 z6 h- ^% x% J/ A( t7 u" |) [
- - Z# S, l* p% w
- * PS:$saveandprint源码的p6参数做了修改
3 r# Z6 C; F4 X0 V$ X
" {2 `- ]5 [% k# ?6 r7 O1 D- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);& J* d$ Q1 f* I4 j
: u. V0 O8 O# e. H
) u$ q9 O2 j/ `
复制代码 ' C. \5 f, t& e$ P& T1 g2 x; S
2、qrcode_logo.php
6 X5 W! d. ?" v s4 Q" w3 _ps:生成带Logo的二维码- % m" _6 `, Z' C* a$ L$ u
- /**
# |1 W/ Y \& ^. f - . k- G& E: I- x6 b% j( f9 W3 W
- * Created by PhpStorm.8 x' j! G# \8 I" o
/ a; |9 }$ r d7 Y# s/ y+ n- * User: user& `1 I2 D+ E8 J4 `% b( L$ k3 y
- 1 h5 ^7 c( s; `& x
- * Date: 2018/8/161 T' n. \0 k2 n
- $ z& ]- o* h6 k4 ~) u
- * Time: 10:43+ {! @! p' E# v6 g+ U8 T
- ; U$ C. s4 V) b- A- A3 t1 _( X
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";
5 I5 J' Z. k) m - , v2 ?5 n% w) p, a/ ^& n
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
2 ~# m* O5 O/ `% y. W5 }
0 j4 V+ r4 l D+ A- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
# D% Y/ W' o) c8 S1 V& }. ~# X
3 i/ F" z9 ~) W; A, t" o$ \- $margin = 2;//边距
, h3 S! h B6 G) A. @' C( u- @- { - , D2 d6 b, g: j: B3 [$ R6 `
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片( R1 h' f) `0 s( R- j
/ {3 D! W& [/ e- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
! `# v& e' \2 M/ q3 y4 _
8 g3 l, F* S4 p! p7 `- $QR = $picPathAndName; //已经生成的原始二维码图
! J1 M4 Y) t; H$ i# L
9 o7 k: X5 u% R' ?5 o- $Logo = './pic/logo.png'; d1 f4 B$ E0 U. S3 d
- , h, M* z! B& |+ e( e
- $Logo_re = './pic/test_logo.png';
! Y; o' ]& c% l
% v: e- Q j) u- H T( B0 G1 w% Q- $QR = imagecreatefromstring(file_get_contents($QR));
/ p& Q/ y8 R* S9 I: ?
( Q2 j( q- h5 s; F" k1 U# t- $Logo = imagecreatefromstring(file_get_contents($Logo)); , D$ ~* l% I" n1 e+ d+ ? B
) a/ {, D" r9 }; o! k- n2 b% [7 \- $QR_width = imagesx($QR); //二维码图片宽度: z5 j. N4 \* y& C @, ?2 U! q! {9 K
- 3 e# W3 v/ [) w% {: ~0 ~+ f6 \3 }
- $QR_height = imagesy($QR); //二维码图片高度- R2 z1 l T: t6 Y: I* z5 Z" o
- , K2 h$ q5 }4 |5 [6 R' R
- $logo_width = imagesx($Logo); //logo图片宽度% v$ R2 P- t- l& @+ y
- & ?. @# O0 l7 z: k
- $logo_height = imagesy($Logo); //logo图片高度% o h4 ~8 r V
- 6 W8 k1 a1 E2 s6 P1 y- {+ m
- $logo_qr_width = $QR_width / 5;
. G- a+ z! ~- x - ! h( I9 Z- G, y# Z; ~4 j
- $scale = $logo_width / $logo_qr_width; 0 c( u/ Q2 d- W! W7 y4 x
- 1 T% V! @& s, f9 r& w
- $logo_qr_height = $logo_height / $scale; . i C+ l) T$ h
- ' [* H; e* Q( F
- $from_width = ($QR_width - $logo_qr_width) / 2;
& m* i* J) Q- {! ` - 6 |( o8 u3 B7 X% _9 Y
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); }0 [: J, K- E
* }# R1 w9 V( u5 Y. _% p" v% R- //输出图片
. F, Y& v: q) S% d) M4 c& U9 ` - ! y5 Z- g; S: ?2 S% j
- imagepng($QR, $Logo_re);
, _- k0 f5 L9 i v- z2 F; W
' O D3 K) k" i) N4 P [- }
, X5 ]9 W* o D- K - + k* q* I; d4 f6 C
- 8 a) |4 B% y+ V0 i
复制代码 3、qrcode_vcard.php (生成电子签名)
) m/ x: j& T, `) h0 P
3 p( P+ r# ~& N3 I8 G$ T2 evCard格式:https://zh.wikipedia.org/wiki/VCard
4 I A8 }6 Y1 x% i9 M1 s# K ^) ~- i7 H" R
6 p$ H$ w# p8 Z7 u, W# N- * Created by PhpStorm.6 q0 ^) V' F! R& h
- 3 x- h: Y$ F1 q- G5 A5 a) i
- * User: user
* c4 P- h$ E, F$ k: u - `. O1 e& a u
- * Date: 2018/8/15! z2 O+ E6 A/ U2 t0 @# m8 F: s7 e
- P/ o9 I S' T6 `4 |- * Time: 23:00
! @: e/ d* ]$ p N7 p4 ?
" c1 w4 ~/ p8 e- */require_once "./qrcode/phpqrcode.php";/**
8 Q: E4 B& s. Z( ~) ]' g. e
" V* J6 E1 J; i! F- * 生成电子签名6 W) U" O! e/ o8 u$ L
6 Q/ K" d( x& N" k/ n2 \- * PS;使用微信扫描二维码' z/ n* ~1 Q: T) z* U2 K
8 G$ [: ?& d7 v3 W- */$content = 'BEGIN:VCARD' . "\n";//起始标志. Y; b: e6 h& P0 d; |. n3 ]
- 8 g% W8 z' z) b' s3 \' h/ q. o
- $content .= 'VERSION:2.1' . "\n";//当前版本
9 D8 _9 J* [- D" }. a7 x - 3 F% m8 Y# y0 [1 f" r- Q$ A2 ?7 O
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名* b- }* S% k1 Y$ l# K0 `7 I
- 3 N" G# F- e" F7 O) b
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
+ g: p/ z: p( l& R0 T+ L+ ?
, Y" X9 x0 z$ a2 Y- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
" r% g. E) Q6 X# ^ `
4 O/ ?# G: g/ R* S6 Z" y: N5 [- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
0 Z, j3 J4 g/ O) v9 v, E. E
. G1 n3 z" ?7 n1 c, ?: W6 I7 q- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
9 K+ Q ]$ m; k# J5 [
, V4 [) C9 ^9 l8 H/ m& S7 [; a- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)1 {) s' N$ s# \9 T$ x
- + w/ r7 ^. G6 c$ u. h, `8 {7 n
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话- A# N, p$ z! @, b
- * }! `+ C, |: j
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱/ E- {: z! J7 r8 X5 A2 w
4 a7 V D, F- `- g$ W- $content .= 'URL:www.baidu.com' . "\n";//个人主页+ W8 l" j/ `2 G+ J9 J& ^
- 3 W! i( ]8 L* I. ^* ?
- $content .= 'END:VCARD' . "\n";//结束标志
' p4 ^% `$ M( v9 t9 }1 j1 R - 4 t3 @! ~5 B& ~2 B
- QRcode::png($content);, q+ V$ @- {9 U) H
3 E+ h8 \5 [1 v5 j0 ]5 E- 4 |* `# G2 m# Z: V6 @8 S+ G
复制代码 9 F2 l2 A9 B E6 ]+ J$ r7 R& @
相关文章推荐:1 y1 P2 v/ }3 f
1.PHP生成微信二维码实例, D# r7 [0 p- C8 u
2.php网址转换生成二维码
7 F8 b! i. L& h8 P3 c6 D2 W相关视频推荐:
, S" s3 i, ~ [8 F6 z6 c1.独孤九贱(4)_PHP视频教程$ G( @ |' {9 ?, _- |
二、JQUERY生成QR CODE
6 o* L: z. a. |源码地址:https://github.com/jeromeetienne/jquery-qrcode
5 S: d/ F& t' I% w- o9 A$ I4 i2 n# C' ^, L3 r* ]. k
jquery_create.php8 C9 r2 n9 }3 Z* R; a* d T
+ O0 d& D, U% w. Q% c' j& h
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 ( D* R+ [5 Y6 m: E1 B( [- S
三、PHP识别二维码& E5 q7 l* r% s6 \
1、方法一
2 W( U& Z& h" t! g环境需求,安装如下扩展
; R& g8 p* R+ V6 h @- ImageMagick
1 e0 _2 c8 X, W+ I: d- zbar
: X& T! T4 n# z; v$ e! e- php-zbarcode' H, O: a: C. k6 Q* D; `
6 P3 X H) v! M4 t0 l5 y
2、方法二
# I7 v& f9 d( E! P- ~1 C5 ]PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
, r9 c# ]2 F# p% c# k: D& mqrReader类:https://github.com/baagee/php_QrReader- E7 [- N" ?7 a! \
) F, s4 b, W! Q2 o
) f# b/ {" Z( u) K( l0 U( u0 e- $qrcode = new QrReader('./test_logo.png'); //图片路径
( u: E* B& y! z0 M' P0 c+ L/ Y3 n - 9 U" B; u. o3 r+ s' P9 D
- $text = $qrcode->text(); //返回识别后的文本3 `! o3 D( M/ i
: z3 A' ] q9 j8 I- echo $text;/ \) r. |$ r5 o+ [# z5 ]
e/ r$ C; ]2 W A( }, x: L0 `
6 R, S# O5 A% s3 \
复制代码 0 {2 w# }, D+ `! F1 U# L8 i
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7) y3 }8 ~6 m% G; X# E9 ~
+ p" m" ~' C @
7 v$ V; e( S8 ]: K; Z# o! s% G1 q g( ?8 y, h9 p
: u- e5 y" z; c5 G' M. s: y
* {* }; c! B! N m# Q: u7 Y. _9 C8 P3 ^; I, X6 D
% ]8 A& }; o0 C7 x: X- t7 x+ @6 D
) n' P; n" Y i2 G9 D" U
|
|