管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 G0 C$ L' w8 o
---------------------------------------------------------------------------------------------------6 C7 s: r" n3 u4 H$ ^
二维码的分类% f$ e9 r6 c. j
线性堆叠式二维码2 E4 l6 F7 g$ r9 [' W* A1 T
: C: B' V" D) C2 _7 i7 }矩阵式二维码* t- R$ y& F4 {
5 c& I7 ^: c3 p" T- }
二维码的优缺点
7 n- G: K+ b! r6 k7 }$ u& Z优点5 z1 u2 ]3 c/ j" M
信息容量大
1 C9 k/ T$ X) R, t7 c
, L1 a' D1 ?# F8 w; F2 \- ~编码范围广1 M5 y& f* _6 [9 J6 h# ~) r
# ^- \# x% e) g+ U7 Z. U+ ~7 d容错能力强
9 b! B2 G4 n! |1 Z
" o- D/ i8 d6 X, ]" e t# |译码可靠性高( d) e3 w9 P" t3 f" }
5 C: {+ T# O3 M- r9 f, _; y( ?" b
可引入加密措施* s" L; _/ f' e5 \
} v# L0 V2 W$ x
成本低,易制作- F% E! x6 @* x+ |( @5 t
% z! c2 _' r' P! f9 ]! B0 v+ N0 Q5 W缺点2 q" R# J, L# L2 d
二维码技术成为手机病毒、钓鱼网站传播的新渠道
3 _9 _5 Z) b1 a8 n& i1 H) T
: @- f( b; @7 q" C' z( t信息泄密
3 B3 L: E& Z& m" R1 O1 d4 E# ~+ h T- H) e
目前流行的三大国际标准# F8 [# G* V }. |
PDF417:不支持中文
1 y7 q# ~# n) r- g. m
. z, B/ ? S/ C7 x1 oDM:专利未公开,需支付专利费用, R7 r5 q \: h$ F, S' _
" ?' }: o0 @3 D0 |* ?7 S- iQR CODE:专利公开,支持中文4 j2 u' E$ U$ g
) U e* h) F; EQR CODE 纠错能力 a6 X( U# s8 y+ u; d' u
L级:约可纠错7%的数据码字
+ J" ]( D3 w. P! |
C W# z1 y- g# q( UM级:约可纠错15%的数据码字
" A/ [4 S" T% Z0 S" ~; O( T) Q2 J8 k# e' _$ ~; d7 a' i, N" i
Q级:约可纠错25%的数据码字5 x+ h: i! r: l: Z' [* v/ X5 k
2 m9 ~9 Z: [0 s& R& D- {H级:约可纠错30%的数据码字
4 u$ Q% D" y; m- U4 i/ ^9 g+ u! ~% I1 Q; D
前提条件+ Y# J+ h* z" Y+ P& Y
GD库3 N8 K& `' b( V
! ^, _7 \3 i1 X一、PHP生成QR CODE! @: D( r" E2 `0 p: h( c& \( W
官网:http://phpqrcode.sourceforge.net/) s: N; R0 i9 Z6 } I G
- }: W7 O! B; n下载源码:https://github.com/endroid/qr-code% W" j. t9 I2 a5 x
1 g; q1 ~1 s/ d
目录结构2 I( Z. H- G; A# e
# B! P3 v9 `( {" ]: ], Z
& D( C9 @3 k1 t1 [5 j: e1 q1、qrcode_create.php
+ j7 R q( H& |. O4 P. Hps:生成普通二维码4 U( [, f0 S0 j3 h% V1 s4 k9 Q
j% k' e/ M) @6 _" H! p: t% X- include_once "./qrcode/phpqrcode.php";/**9 Z3 G4 O. c, U7 s2 T# F9 l- E% j
4 n; a! M% _- [9 J" n- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径. S3 q/ M: l4 R
$ N! l3 B/ ~1 a( v( I4 ]- * 在浏览器上直接生成一个二维码(内容为abc)
+ L6 [5 ]. t: ^1 A& R2 ] C P+ u
; N9 ?& b1 C/ e& e6 N+ Q- b5 m; r9 ~- */QRcode::png("abc");: E5 o9 P1 o5 t; o. F, C
- $ q' ?( l% ~1 [# J: T. x
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**. g) q2 ^5 A0 Q4 q& d
2 C7 i7 Z' c$ R& J- * 生成文件到本地
( ^4 m5 Q" T7 x8 t2 T - # h. f4 C- A- N
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)6 B& T& n" e- m: p% U# E: `% }) T2 q
- - v# r2 `6 m4 m8 [
- * PS:$saveandprint源码的p6参数做了修改- J% H4 Q1 X4 n1 Y G$ s# q
- 9 E$ P7 K4 u# D1 z* d9 {
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);: |4 {9 [6 S: b! \' C
- " O7 b$ S; L x/ q/ |
3 L1 k% c4 t* b2 g+ D+ e
复制代码
2 X. ^ A) k" F; Y1 M! W4 C2、qrcode_logo.php' Y* o9 R8 U, @6 |" w- c
ps:生成带Logo的二维码- " Z/ s% H5 G5 M: s8 d, J
- /**( r' L; o" e1 S3 O# {+ j7 t
- 8 q) I8 r8 e& T* R) p6 D
- * Created by PhpStorm.0 L; ^. m% B+ Y9 D# }% M
- * C6 A% s+ @9 f" D
- * User: user6 e5 m7 ?/ f: y+ ?
: s" r' y/ w* _5 U8 W9 t- * Date: 2018/8/161 w6 w8 \' Q8 L- ]0 ?6 m$ |# t5 f
- - ~; q7 B7 }6 n" |- [5 Z8 K. ?
- * Time: 10:436 J+ X2 v/ Z4 z) S3 r
$ A* a, K1 m7 x$ g- */include "./qrcode/phpqrcode.php";$txt = "测试内容";. X# r/ Q7 z& l
R, F9 K3 B2 d7 D# O- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
9 F- T. v: q3 u) h- m
& l- C: A7 Z) N( g+ N( n% z4 [- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是4 l/ ]% t& P" c/ [9 b
- ) ^( q$ w s( m. s" S$ B
- $margin = 2;//边距
( T x# x5 R9 X( t6 |
# _% g3 Y3 V# @, o" n- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片; G! W( E5 ^* C3 Q, \
- 2 k' r* d6 a0 h: O
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
+ s4 H# G. k$ v- Y3 Z - 8 ]- R G5 o- r) V; b6 F
- $QR = $picPathAndName; //已经生成的原始二维码图1 l7 f o# E4 F- |6 B
) [( x' V2 t- D* c3 F) s- $Logo = './pic/logo.png';
}' [3 R( j9 e) U& n9 p$ r
! k$ `" d* Y: m( Y7 H- ?; |- $Logo_re = './pic/test_logo.png'; & T& l3 c8 b e
- 1 b3 h. W/ Z, [* M0 H& V
- $QR = imagecreatefromstring(file_get_contents($QR)); % l( {& |4 o0 {1 H
- 6 }7 K7 G- o, ~% N
- $Logo = imagecreatefromstring(file_get_contents($Logo));
# G- u6 u) ~; B - 0 A3 w1 ]' B# ~- k' R$ s# `/ L/ |/ E, g, I
- $QR_width = imagesx($QR); //二维码图片宽度; O! Q* S6 A9 `+ K4 w5 ^
- . S' `* f7 i' P9 m+ ~
- $QR_height = imagesy($QR); //二维码图片高度
# y/ q* w% }" a9 }! V) `
+ p0 a: J" [' k1 T p- $logo_width = imagesx($Logo); //logo图片宽度6 Z' m A$ B/ ~8 k/ O& M
- ' F/ g4 V, X$ r; E7 x% Y
- $logo_height = imagesy($Logo); //logo图片高度
, ^7 L- k! D( k( C9 o; `1 t - 2 D; r- p* b* G$ S* ]
- $logo_qr_width = $QR_width / 5;
H' [6 M1 O N2 e- L - : r# [7 u/ d+ g5 N Y* d# u8 D
- $scale = $logo_width / $logo_qr_width;
* N7 ~* Z6 x; B
6 I; u1 \7 u$ E0 [% @; m- $logo_qr_height = $logo_height / $scale; % `* k# Z p4 h% d
}* ?$ [3 h, S' k- $from_width = ($QR_width - $logo_qr_width) / 2;0 ^; k5 C- w; m# J# U% ~$ E7 M
- # F% \7 l5 R, T6 {) y$ d
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
$ P. M! ^& S: C: T - 3 r* K9 J) i% w8 O# P4 q, D V3 h$ b
- //输出图片6 G. h3 |1 a. R/ {8 o
- 9 u, y. d& g# S/ F+ Z2 s
- imagepng($QR, $Logo_re); S4 N# B+ H" ]+ b4 r5 Z( L- Q
5 P3 f n( G) n1 x, b1 }- }
; u8 D% ]/ \, e
2 s# m8 M* W1 M3 z i* a2 @
6 B1 G! Q& m3 l$ i9 o' o2 @
复制代码 3、qrcode_vcard.php (生成电子签名); |& i0 n& [" W7 @: T/ T2 e0 ?
) k* t& B9 A( \' e! }$ o( I
vCard格式:https://zh.wikipedia.org/wiki/VCard0 p9 \+ ^+ G# [! D1 [" c
" `' Z: \$ H- V- X& o0 \- 8 o$ i# G2 k5 ]2 [2 c5 C2 Y0 E
- * Created by PhpStorm.
5 W6 V% x4 b4 a# c! \
. A: A6 Q& w3 F- * User: user \1 W) b+ c$ r2 H( ` h
- 1 ?" f$ z2 G+ |0 r e) d T* ?/ D
- * Date: 2018/8/15/ c- h8 g8 G4 G5 l% z
- : D8 f1 S6 _. i+ H. Z; @' v5 W
- * Time: 23:00
% N* L |( O# U. d" B7 e# Z
5 O. o( n! @2 q% K1 Z' `1 q4 s- */require_once "./qrcode/phpqrcode.php";/**
+ ^2 v; F8 Y0 T: V
* l9 t4 q3 z+ ?: m) W( O- * 生成电子签名
' c q4 U6 g6 d# |7 k
( J! ^1 `; u) t1 K4 H- * PS;使用微信扫描二维码
% {1 N( t7 K: l
& c8 A/ Y8 w5 }% r- */$content = 'BEGIN:VCARD' . "\n";//起始标志
+ W" V8 O) L: ^2 H
% W" V8 E0 S0 V+ f2 u; b- $content .= 'VERSION:2.1' . "\n";//当前版本
* u3 G! M+ F, w$ M
- K8 W7 X0 H& K% a6 ^- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
9 C7 I+ L+ D- O5 `7 ]0 ]" o - + \6 K/ W" B8 y
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称. ]& Y' \9 K6 [: N$ ^/ |! k3 ?
- 1 S6 z6 f+ \# g% h/ b
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位7 _" B ~$ G; g! ~8 h
- . {+ @$ G. c/ J/ H2 R
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话* e; b( z( h% C
- 5 }8 q6 ^6 j: a% O. i
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址* R0 z: @* t) W
- % D" z/ M$ ?* z1 D W3 [1 F
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)# Y' @2 G, v% Y; R2 c: i
- 4 S3 x7 V9 O' I0 {0 I
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话% H2 Y" Y5 b7 P0 U9 t8 t4 O4 C; I
- . Y2 n4 D! l% y( R! t5 j+ `
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱5 J3 A' r% I4 }4 W# V9 |
- ( _8 g5 L) b8 F
- $content .= 'URL:www.baidu.com' . "\n";//个人主页
8 K ~" ` l- f9 c7 G: s - ) f) o* C. @' m( k$ N
- $content .= 'END:VCARD' . "\n";//结束标志
: _' C: F( G! |* L5 o
3 i7 v& `) t f5 h; ?- QRcode::png($content);* o0 y0 w4 O8 l7 I/ U0 V/ w
- 7 H. G1 w/ `4 s. n# F7 J
- $ z# d5 x5 [' |: s4 E1 A! L: f
复制代码 2 o7 y1 Z% Y) \5 K0 T
相关文章推荐:
`8 }% R, h5 f3 _7 ]1 R1.PHP生成微信二维码实例
8 \7 B) b2 _! k% A A2 M2.php网址转换生成二维码
) l- @1 l% s& A P相关视频推荐:
7 m1 Q F2 K% L1.独孤九贱(4)_PHP视频教程( B/ s3 j# m2 t
二、JQUERY生成QR CODE& J0 v9 N# W# n5 G
源码地址:https://github.com/jeromeetienne/jquery-qrcode# l' z' j, o! d) F2 i
' t; ?* q& F8 v& R. j& H
jquery_create.php
# j0 P' G9 S1 W6 v: M3 M5 D0 b. G- j4 E4 |, v8 P/ A
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
1 I& E5 n! c1 i7 g& d' ?三、PHP识别二维码
8 T1 e! u+ O# K! U1、方法一; l. s0 P+ F1 B+ s) m( I' U
环境需求,安装如下扩展! g; c4 M( Q3 m' U* J% ~2 H
- ImageMagick
) }* X2 M5 e' ]) l# i8 X" y- zbar8 O6 u* W0 D- }& ^
- php-zbarcode
5 ?3 J. g) c1 @9 z( g: O3 S
/ t6 V7 D3 Y0 i2 q" _2 a2、方法二
3 p& D2 Q& Z A) KPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
3 }8 `. F5 A( a0 r QqrReader类:https://github.com/baagee/php_QrReader9 T5 C7 {+ w; {
* H. L8 u+ s5 N/ b; H- 4 e* o8 f2 j+ y" C9 d7 e6 D+ Q
- $qrcode = new QrReader('./test_logo.png'); //图片路径
" S; L! B. i, \
2 s! X/ h9 u* e; I2 k4 \" K( p- $text = $qrcode->text(); //返回识别后的文本
( I8 ~1 w3 K8 F# j! G: V - ; H! @2 Y7 E/ |" Y: H! H
- echo $text;& @3 o; C* O% R! ?1 C- R q6 _
- % `( n% B* s3 @! Y0 ?( g
- : Y3 p. o) \5 I2 t9 q! c
复制代码 2 ]( m0 a5 v; v! Q
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
' a0 E1 y1 d. j' P" r2 \$ R6 w1 [( ]4 _
% r9 m. a3 n3 N# `
4 A) u6 N7 u" R/ @. _4 S$ R! \
" e, v) d+ s# |/ B- c' y$ {, n) n4 w
, x3 @9 K9 t( q" z& t
* B: e0 A# T! s! I5 r$ B( f* z, R E i: q1 w
) ~# t6 f8 V# Q3 E+ p, e3 o, {0 Y6 A |
|