管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。% W M1 x0 {. c5 F- v& F" n# }
---------------------------------------------------------------------------------------------------4 F# k {# R! p
二维码的分类
# \% W5 m, o7 w0 D' d线性堆叠式二维码
3 K& A4 ] e5 w+ D4 S
- a5 j% C9 I' i矩阵式二维码
7 M8 V* M: h$ H0 l8 ^9 }4 W+ T2 E- `2 v
二维码的优缺点
8 F1 n" |: V( B* P# N: A优点 m& t) r% Z0 C, e; [
信息容量大5 o# U; M# W* L1 d
' d4 q0 m! w- A. v
编码范围广
# q3 ~6 y" }! G* k: L
* x2 S9 r; v- k" n4 H5 S容错能力强9 T5 r* T. G, j
" U$ b5 {: o N" ]" T' c' r" b译码可靠性高
. S8 b) j( N1 K5 h3 u* W; [5 E+ X3 n8 I1 `
可引入加密措施! t7 ~' }8 N0 q9 @ N
# x" {8 \+ u. Z& i3 l2 @1 |4 o) P成本低,易制作! f- Q5 ^* _4 D7 K# s% ~
" q& x: F: ?. u1 v
缺点
+ H4 R3 N+ P+ Q2 ~, H' H二维码技术成为手机病毒、钓鱼网站传播的新渠道
# e" [$ A: O/ c$ F5 k
6 E2 Y/ G$ e {信息泄密+ v2 q* b3 H0 U5 T/ n# |; j+ z
_# @6 ~& z8 M; j目前流行的三大国际标准
5 e7 X7 |( E( y+ ]1 e+ aPDF417:不支持中文" J: `' T2 L1 i6 m0 M. l4 R
5 C u* C- K" v
DM:专利未公开,需支付专利费用
E0 M* `% i3 W% r9 t
. O$ H6 w8 a/ f! a' ], ]QR CODE:专利公开,支持中文
, R+ i9 k) S) ^5 y; |- _7 G& {/ v
/ H/ G. |& f+ gQR CODE 纠错能力
+ n% L4 M2 k% [4 @: U" ?L级:约可纠错7%的数据码字
3 }6 w" p% C+ i: B% \* p6 N# | N0 A6 g2 k# I- t$ I, f
M级:约可纠错15%的数据码字, Z! ~. H! |7 R+ X% D1 @& `
9 D3 ?; J% d( @, W4 S
Q级:约可纠错25%的数据码字
- k3 S" c- M8 y# K
; @0 z- W( f* P4 o% T2 DH级:约可纠错30%的数据码字
5 H/ v7 g; n5 n- D# G. p
$ f( r4 D8 _; s* R8 q前提条件
# \ O% g+ }6 b9 n* v0 H7 FGD库
1 R. Z8 U- U: N- x6 q g( l( V( [7 ^1 `& C6 o6 h* w
一、PHP生成QR CODE
. \# L3 [# Q$ t9 k) Y官网:http://phpqrcode.sourceforge.net/
. m' H( d" z# H2 h: {5 F( R
4 W- L. H6 W9 D8 f$ L- l6 T) W下载源码:https://github.com/endroid/qr-code
1 \9 [; D; L8 Y4 W0 {9 m% {4 Y# d5 u- y& F, @ g
目录结构) E+ ~/ E9 r! A# h u7 _0 S' q
/ F3 M, n9 t v' G9 C; F9 u: R9 L0 b' f+ y! Y$ I
1、qrcode_create.php
# _# R2 ~+ [# E2 t9 }' Ips:生成普通二维码
& f& } l* Y2 x
: c1 W7 K1 R# O* B. I$ t- include_once "./qrcode/phpqrcode.php";/**2 k( \" t: C" D' Y. r
- $ U9 D7 p X+ Q
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
* t6 F) U- `5 P3 k. r1 p# a* I - " `$ P0 f$ Q2 F9 d
- * 在浏览器上直接生成一个二维码(内容为abc)% v1 E7 V3 s7 B, T) L- c( x
- ' n F6 \/ u$ l
- */QRcode::png("abc");
% s- k& s, {8 _* ^6 @ - ( p4 o. Z2 w6 w$ b( R$ n3 D
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**" s- r) }- @( T3 u
- ' v) H# h, w3 p2 t! g3 b$ u
- * 生成文件到本地
* _8 C8 x' o, l; v
' ~8 T& U+ b4 `+ J+ z- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)% s0 F: Y0 _ W- t1 g5 D, Q
5 Q( U4 p y' ?0 `, N- * PS:$saveandprint源码的p6参数做了修改
( ~2 c% o# W7 E% G6 L. h+ M5 \4 B - 8 i0 u8 \( J; p- g
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);$ Z& L8 r& w" b6 [+ s
- 5 E$ Z3 c; @$ G/ r4 j* Y4 i; E5 @
3 T% [* Q& o* z& D% Q
复制代码
4 f, v/ @' {1 u) {8 E3 y r% l2、qrcode_logo.php+ m0 F1 K; C( m# ^
ps:生成带Logo的二维码
) u, O. o1 e/ F( ~- /**
6 h3 }: N' g, n" C4 F4 D4 } - 5 T n/ P6 v: k1 O" w- ^
- * Created by PhpStorm.
5 M5 ]9 c5 B5 ]( L' G( e; O6 \ - 8 _* Q$ J: \8 n4 d) A4 z- ?
- * User: user7 u7 K" S+ U s3 `, g
4 x& O" K; A9 d g! E L- * Date: 2018/8/16
( j% ]& I& h$ I9 @
6 H4 \* U R9 Y% e e l- * Time: 10:43
% Z1 v8 B7 S, L+ R3 B
3 Y$ a6 L$ ^1 c7 t" Y" M- j: o- */include "./qrcode/phpqrcode.php";$txt = "测试内容";! t& m2 B/ p# B+ {0 f
! L% O- c9 Q9 X: x3 O5 m0 e6 v- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
$ d: ^9 v1 A% {/ T4 w
! K6 a, b+ }* l- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是. f0 ]# B; m/ R* z* y
- ' c9 S& ?2 Z+ ?: Z m
- $margin = 2;//边距3 V, F0 J( N5 H+ k
- 3 O9 x* P# @- L3 Z) H& l
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片3 ^5 @; ]( O6 h1 F0 Y
- 2 E: y. p( U! {# D, _3 I$ W
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ . B9 c- ~" k: F
- $ Z1 B3 p- z: i3 v
- $QR = $picPathAndName; //已经生成的原始二维码图
3 R9 X0 c# l0 K$ e- S - 2 B, R6 [/ m: g8 S# m: n3 M$ Z9 ?
- $Logo = './pic/logo.png'; * F6 |# J/ b; o- O
* y. \6 o- h7 u" W9 U6 i- $Logo_re = './pic/test_logo.png'; # V8 Q/ j$ l' Z$ a
- , \: C+ R. |" L$ A
- $QR = imagecreatefromstring(file_get_contents($QR));
( A1 R, p+ z, S& p - 4 P6 _9 e# h% Z9 W
- $Logo = imagecreatefromstring(file_get_contents($Logo)); 1 g8 m5 ^" z: u+ N9 B1 k: ~
- V3 d# q; o* d& k- $QR_width = imagesx($QR); //二维码图片宽度
" X. d( g7 o2 i% z' D5 ^, e
; `& l2 a5 h1 N) o% {2 [- $QR_height = imagesy($QR); //二维码图片高度( e' d8 B% t- R& j* c
/ }9 N( H: [) O- $logo_width = imagesx($Logo); //logo图片宽度
2 j0 W% J* O! W$ S% R
/ g& s% s( D6 F; F4 t* h8 J( N- $logo_height = imagesy($Logo); //logo图片高度
/ @& g5 ^- |0 L
+ }8 V8 k! a' i z- Q- $logo_qr_width = $QR_width / 5; # X/ t" p4 E. w* h+ @6 X$ X0 n$ g
: c( _; t( M5 ]) M* S- $scale = $logo_width / $logo_qr_width; % r) t) r% i6 H. f; ]9 g# U
- ; b- U# J4 ?6 c2 U3 [
- $logo_qr_height = $logo_height / $scale; 2 _' V9 h, D; r# p- d8 Q5 Q
- 8 ]; x$ G) Z4 l/ R
- $from_width = ($QR_width - $logo_qr_width) / 2;
7 Y, R5 q J8 I% b8 b( u! d I0 O# A4 { - , e# N# h* o, M" e" O
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
+ \8 E, m! M1 L% f; a6 X+ M
9 f% F* y0 w5 }1 F2 P' N- //输出图片
, v# b8 N0 W2 I: y/ v0 y - 0 R# {7 c4 c" O# \, a# b
- imagepng($QR, $Logo_re);+ p6 U1 V2 o9 m& b9 `# e h
- , j) r. _+ z3 l1 u& E! F1 z
- }
! E- H7 `, I) S - 0 i" K# Q9 b' J- a$ H
- + u& A( P8 l* X! k
复制代码 3、qrcode_vcard.php (生成电子签名); G& j$ \- _; K3 Z
6 X2 V7 p" |! ?' fvCard格式:https://zh.wikipedia.org/wiki/VCard
: ~ [4 ?6 h) {# p8 Q. e
8 x4 J9 x; M+ S4 `% e! z- 5 @& [4 U5 A$ Y3 O
- * Created by PhpStorm.9 c0 i# ]$ }& X" n
- # a- E& }$ b- G
- * User: user
' i3 _" e2 m- ^: G: t2 |
* O& b# x* _1 m1 F9 g& Z4 R- * Date: 2018/8/15, x. e! v. s3 _8 M
) x$ B y7 h# _8 o9 |- ^- * Time: 23:00
- k J/ P) @( B- _& X7 W
1 V, z8 Z7 D/ ]6 I% e- */require_once "./qrcode/phpqrcode.php";/**" ?& e% Z, y) E* Z% L2 H( S* o
4 K" F- q" J- w2 Q6 c7 U- * 生成电子签名0 [9 b k* s9 h: F: B z" W3 N v* T
, G% Y: B! [. y* ]7 k) l- * PS;使用微信扫描二维码' W8 i, [: Z, N }
/ P. d3 r% ?5 D+ s: o5 [& i- */$content = 'BEGIN:VCARD' . "\n";//起始标志
8 W9 o! V- k' _! o
! J4 q/ j0 N9 W+ E2 W/ L- $content .= 'VERSION:2.1' . "\n";//当前版本3 C4 U. N. C- o7 C
- % H& i |0 |5 E r9 j7 Q
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名* @1 c( s: l0 d4 A1 A& s
- 5 T9 b% M) J* E! W
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称+ N3 a! g9 Q+ z- G. J7 o+ d* l
2 b) P8 I- C; U- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
1 @; y* I9 e) l - # P* c; `3 j/ {! B0 k& r
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话4 [6 H, f- e6 p1 X7 Z0 \, J" r- d& x
6 W. d3 J. b! z- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
, X7 ^& u, a/ x8 s6 v- B - 0 s0 R2 W+ ^7 a
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
6 Z9 }! W/ q2 D2 ^' I# o( B
6 ]" S* q0 j9 l- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话! l, |9 G% t" i
- , w1 T! w/ b- \
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
+ [' p8 k3 t9 T, L' X3 l
$ A& e% \, c$ ]$ I- p, G% |- $content .= 'URL:www.baidu.com' . "\n";//个人主页
& Y+ D( \; h) |4 A5 Y2 v# E2 G7 o
3 V, B( v/ k* j# k- t- $content .= 'END:VCARD' . "\n";//结束标志* N. u: R a. ~( q# `- a
- o3 I# z3 Y) e4 }( N1 ^ d j: w
- QRcode::png($content);
. V% `9 I( r" s/ I o4 o2 U - 7 b- ~4 [: r( U n3 j' j8 [
! p! _# U; m, c! ~
复制代码 ! n' Z: I% B! H& X* }% x
相关文章推荐:0 |* e f( Y0 e$ L$ _" U/ I
1.PHP生成微信二维码实例: s! a0 x) t, F0 V5 K& H
2.php网址转换生成二维码
8 z% ?/ W5 w% U5 s- ?相关视频推荐:
; Y6 {) T, q0 Z1.独孤九贱(4)_PHP视频教程
, u. E0 x2 ?) Z4 \' [8 y二、JQUERY生成QR CODE8 z. c, g& [3 C; @' ~9 h1 j
源码地址:https://github.com/jeromeetienne/jquery-qrcode
/ J! W# x5 H1 P+ i1 @6 L$ Q
+ O3 w8 }. p# Q kjquery_create.php
% f' l; J {5 J' r+ M( b, I
1 K0 S! d! [* W* x) u- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
- J0 ~. U* y+ }+ B1 V2 A三、PHP识别二维码$ r3 C2 C2 p; X
1、方法一0 a/ d1 h4 g: O
环境需求,安装如下扩展
- f: e7 ~: s3 s$ ^ r3 v* B- ImageMagick
" b! H* x2 }7 R4 L# L- zbar2 Z3 {# }- l4 }, E
- php-zbarcode2 O* {2 \! g- A) V# F+ u
) r u* ?$ r0 w1 [# b9 d7 K2、方法二* u$ {4 ]: y7 U) ~. E; x
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以; J4 C# f9 d" J, v$ n
qrReader类:https://github.com/baagee/php_QrReader/ z! ~& V8 q8 v; g
/ r/ \/ s7 b) X g \' L
+ t: e$ y% e- {- $qrcode = new QrReader('./test_logo.png'); //图片路径
) e- O7 g7 X" u2 S: q, `0 U4 [5 `& Q; P; [ - ' g+ Z9 ]) q) k) R; m
- $text = $qrcode->text(); //返回识别后的文本) N9 C* E2 G& Q7 V6 h
1 U5 S1 M9 U R: m' m" [! B# [3 A2 T- echo $text;
4 ?7 P6 t4 |; W+ z# y( T4 D( \5 T
2 j7 \7 D( M* u3 {# ~% C- : Z# p% e8 v7 z4 q* k
复制代码 ( a0 ~; f( t% h* T
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
$ w" u1 W" q* c* b
. a9 E$ g2 h- V3 Z
7 n8 F1 V% h! I( b- \. X
$ y8 l1 {0 q. z& x' K
& m# C, ^/ {. Q+ M3 z# ^! v) L0 \$ S8 z- @6 g0 T8 s
$ Z# l! t- }# U/ z7 F( ~+ g
- }# V4 A6 c* y# h, v0 e! X) w# a( n8 J4 z! k) m7 L3 Y2 K0 _" A
6 X7 Z0 V% d# N# p+ j& i I
|
|