管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。) `" A; X& @3 i8 A3 p f' z/ m
---------------------------------------------------------------------------------------------------
2 E4 e& T! Q6 {7 D" Z+ H! V二维码的分类3 _: z: f# w+ l5 E0 L
线性堆叠式二维码
$ E. } j0 {# F4 W( I2 A% p# M; a# m0 k- R/ [
矩阵式二维码
- D% G: S" @, Z0 W+ K0 F% M! `
: p* s% [7 [! ~1 L( {7 S/ J二维码的优缺点; E' O4 o) L0 j4 B8 n+ c; |& C& N
优点
& I% q1 b$ }# ]' D信息容量大5 F: y8 z7 u* J" Y% M, F7 s
3 v9 O0 r, Y# I. _
编码范围广
& b7 C* [: ]- M2 M) P8 c" |) C2 N" A* Y1 L z- `5 ^
容错能力强
: v6 w& ~) r- I N: y: I8 K5 b# h6 C7 ]* w
译码可靠性高
9 ?; w& }5 H- p& Y1 g Q
4 j6 k7 h4 s/ Y* r5 o) \, `/ @可引入加密措施' u1 g: Z1 V9 a
' I G( i, q! L/ A5 p) n成本低,易制作' _" n* k" Q9 O" y. r, A7 k0 _, P
7 k) B. }- m h( e9 D' a
缺点4 t; _9 w. \- S7 G
二维码技术成为手机病毒、钓鱼网站传播的新渠道
. n" f" ]4 X# r: H- U3 m v2 y% N* g: X- B
信息泄密
+ b2 u4 g" y2 L. v5 [ Z1 g, q' m! `
' ~7 b: G! c6 P) ]8 L目前流行的三大国际标准
; A/ x! a7 B# i) V; z; `6 k/ `PDF417:不支持中文6 p4 r! i! K- M; M0 R
5 m, Q& ]2 m3 O2 j1 p! k
DM:专利未公开,需支付专利费用
R& j" u# H0 @$ U F+ q* V' \- f1 j9 j9 J! {4 `- Z
QR CODE:专利公开,支持中文! }0 o6 X& e% m' e- E
+ m$ r! ^3 d# y, j0 r3 E
QR CODE 纠错能力
8 K; Z J. M: q% |1 rL级:约可纠错7%的数据码字+ q" D8 l8 D& f
- D+ ^& y" `; h1 g, E
M级:约可纠错15%的数据码字3 ]1 V# j; D0 `& h; O
% q8 J' w3 l- `8 lQ级:约可纠错25%的数据码字
/ w% d6 Q! H3 x1 E' B" n3 I1 `! H5 q, M5 o) D9 f
H级:约可纠错30%的数据码字
& Z7 b9 }7 X( p/ T" T+ e# V3 P0 L, T+ l0 s
前提条件
7 C( y3 c- v w' k+ V1 N( I$ L: yGD库) Z- k/ {) I! \ R; g
4 s0 D6 h) E* |7 u8 g3 F
一、PHP生成QR CODE2 @. N- l4 y. Q
官网:http://phpqrcode.sourceforge.net/
7 G. ]" k' V, T8 a" \! g) G
6 D: z& F! q$ X% l1 j m, O. |+ a下载源码:https://github.com/endroid/qr-code
5 W8 o5 s h, c
w# z6 V! L1 v& b2 m目录结构: t- J: m4 p- M6 H( U _( e
/ c; A/ Y9 V: E1 b/ J: ^3 M$ h6 k
8 W) S% N( Y. M9 `3 E
1、qrcode_create.php
" _: t( k% X5 i/ i7 t' Dps:生成普通二维码
1 s$ I1 ?' X1 j8 [) R- 4 @; v; C$ X3 e) m( w% U
- include_once "./qrcode/phpqrcode.php";/**
" ~( q) D, |# i8 h
0 _9 h9 D0 O/ m$ o- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
& m$ H: W+ r' p1 ]$ u/ t( U5 n
% a& ~0 L! M% _# m- * 在浏览器上直接生成一个二维码(内容为abc) v' {. L, V$ r8 E$ i0 }6 U! V
# ^. F% x3 g6 n7 ~3 j- */QRcode::png("abc");+ y8 Y( F7 P0 i4 n$ K
1 i2 m/ E9 C* |, Q; ]: c- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**( c* g$ S5 n: s( P: z3 ]) C
- ' {& t M2 t2 X" F( A* E# G% R
- * 生成文件到本地
& Y, D; ?1 V; M5 I: d! ?
- n I- w$ i$ g2 ~* X- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印). B1 c( f7 {% o) ^% ?0 |% c8 y
: z1 m3 L3 x, |$ h4 [2 Y- * PS:$saveandprint源码的p6参数做了修改
* E7 c! U4 p, V5 g- \3 I
$ r9 P: j/ I0 ?5 n. Y% q- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
- S( ~3 z5 t7 j# {6 X& S1 ^
' q, c( T1 z6 i5 @$ |- 0 {0 _( s; y! y! Q" n* |
复制代码
0 J8 F7 ^, n* F. \# J2、qrcode_logo.php8 ]/ a* ^4 g. @" F
ps:生成带Logo的二维码- . x- d* B# L4 Q; Y/ @9 C; a# [
- /**
% H9 f: {% a" H4 P7 ]8 {/ a$ A
1 ]: F+ o1 D+ O- * Created by PhpStorm.& v) I* \3 `/ B/ Y; h9 w( q
- 5 Q2 Q+ e# H4 T2 [
- * User: user6 \. n% [5 `! C. J z7 D& Z1 D
- / H. r" o" X W& P/ H2 d' X
- * Date: 2018/8/16* c- j' k) e7 k- V
- " F, `( e0 }% A7 @# X1 q7 t) \
- * Time: 10:43
2 I6 C B) k+ l, r# B, s1 O - 5 w" j( S2 M3 v
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";% r* Y- @1 C0 a9 @$ S }
0 B4 ~( U" n4 |% L6 K0 ^' v C3 L- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称+ N, t* U# E3 r9 \2 A
- 0 ~0 f& o* D' o3 Q% M! u
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是6 P/ }! G# x1 z+ M! O* D- M
- # Q. e0 T( [$ W/ f' t0 c' b
- $margin = 2;//边距
/ l8 u( h8 {$ @0 N( m% v - $ Z, k" h; G) a6 A/ k( m( B
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片* D3 L% t0 d; J$ N2 J. p* A8 ?; c0 r
- ) R8 U/ K$ D, E) }9 A/ z( V
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ # r" L- C8 x# R3 P# Z
- . r: W( M. f5 }3 d$ [
- $QR = $picPathAndName; //已经生成的原始二维码图9 S- y' Y( G$ f. [5 j' T3 w: c
( q6 w! |" c6 o8 R- $Logo = './pic/logo.png';
2 H& x% Y1 C: I& w) w - 0 F8 n- X S; ~8 y0 D4 a
- $Logo_re = './pic/test_logo.png';
1 v( I6 [: `1 |! k7 g
" H# j w' S8 P$ ?- $QR = imagecreatefromstring(file_get_contents($QR)); ) `7 M S8 {& `0 s+ `& Z4 A
2 z; O! z4 V5 T" d3 Z- $Logo = imagecreatefromstring(file_get_contents($Logo));
* s- z. E7 s% c [- k$ }" y - , r% }, c" T# o+ Q/ p
- $QR_width = imagesx($QR); //二维码图片宽度9 R6 E. F, i) o0 W+ f1 p7 u
- . p/ \" R- G( K( Y% V
- $QR_height = imagesy($QR); //二维码图片高度
0 p* y4 G1 g0 s0 l/ i1 c0 A
I( x. h+ H# t0 `2 O) c# f- $logo_width = imagesx($Logo); //logo图片宽度
! N9 r# D/ b* E7 ], I - ; U0 e8 U7 o/ s9 B e7 k
- $logo_height = imagesy($Logo); //logo图片高度. r5 I7 N$ _# L6 j, Z
- 8 K* W4 p9 O! T9 x' V. H
- $logo_qr_width = $QR_width / 5;
7 T' W2 n$ @6 F& a
. r) b0 V6 _7 _( O- $scale = $logo_width / $logo_qr_width;
0 J3 y/ K. q# r' u% Z$ L6 r* D5 ]
1 V. [8 |; {0 p; u$ Q$ C- $logo_qr_height = $logo_height / $scale;
) i) R/ U3 e5 P7 f3 }5 e [1 A/ h* P - / R C: H: p+ Z, t* N" L# w* h( t
- $from_width = ($QR_width - $logo_qr_width) / 2;: L' _+ b- b- b
; ]% i$ _) E P2 N: y- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
9 j1 _, `: D9 F- t3 f$ P% z( i - 2 U( h9 ?5 j* B" q: A# d5 |3 A
- //输出图片
% o1 D2 N" b" L# E# U) C
6 L- w9 T' [8 f- imagepng($QR, $Logo_re);
/ T4 s+ f0 A, e# B6 u
0 e2 x) a' f1 [; ]- }( {- N9 ]7 |6 y( T$ \! `( p' L1 a
- / _( X( r: n5 l% o. U' ?$ e1 W
# K, ]- T+ @0 A
复制代码 3、qrcode_vcard.php (生成电子签名)5 b6 W" r# A$ ]. Z8 A! ^, F
3 O7 Q8 z' E3 _5 A: m
vCard格式:https://zh.wikipedia.org/wiki/VCard
5 d6 B& h0 T* X6 N! Z
6 j, O' g2 o3 n) E
6 J2 ]" O+ U9 O4 c- * Created by PhpStorm.
0 R3 S4 S9 ^# x; k7 \ - . [. c: ?- o( b$ _* v
- * User: user" D, |9 S* Q- K( j" P ?
0 A8 W. |. b5 k; K6 O" q; }- * Date: 2018/8/15& M9 m c# ~, T4 N6 r4 S' M/ o
& Q( t- d5 d1 R9 j2 ^- * Time: 23:00$ s( V/ L9 N$ ^" c. C# X* `* F1 ?0 f
- # R" D. }9 k7 Z8 e& d/ X+ y- V
- */require_once "./qrcode/phpqrcode.php";/**
4 k7 ]1 w4 D+ b5 U: m1 ? - $ i: H; N2 b7 j# O4 T. A
- * 生成电子签名/ b: ^% K t" Z3 m3 w$ o
- + y! g+ x, S) Z2 m+ I3 q: Z! x
- * PS;使用微信扫描二维码
- _1 d( o/ F1 }% d) Z
8 m9 n; a4 F6 K- */$content = 'BEGIN:VCARD' . "\n";//起始标志
1 H6 o/ ]" p# [9 U- x; N- m
$ M; U( g, Y9 m1 ~* ~( Z- $content .= 'VERSION:2.1' . "\n";//当前版本/ x# Z+ f" }: ^8 c+ X; R
- % P* ?7 M9 e* t
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名7 N' L z) F$ p5 {* B5 f
9 ^' K2 ~$ x! u3 P9 i6 _- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
3 K s; A6 K/ s7 _( ]+ R Z- {
4 b+ b- P6 `% R7 m- $content .= 'TITLE:PHP研发程序员' . "\n";//职位& I u k7 r+ |: ]6 x! d
- ; o, {' J2 ?% U$ e4 w
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
* w$ ?9 f; [/ @3 p
F$ z5 J( S9 B- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址& O! x: O: p- s
3 I y# M8 j: ^+ A5 n6 d5 X- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
% i$ M7 D, b4 K: \: k# [. {. Z
& f. U! h$ A& i- T$ N ~" M) X- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
' q' V' \6 d/ {$ [$ x" X - + E4 x- U- r* a+ h) A; l9 u+ R5 E
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
+ F( |# t* u& f5 Y: w c- ]/ W1 B% a - 0 Z3 y# a# ~# I0 _) c
- $content .= 'URL:www.baidu.com' . "\n";//个人主页. s7 P w3 B2 ^) H# a, P6 I
- b: \1 r. p+ d2 D. I; j& F: C- $content .= 'END:VCARD' . "\n";//结束标志4 |& l% @, a3 w1 I
- 1 w: S4 C+ n/ h* [3 D; h" K5 h
- QRcode::png($content);
2 E, Q8 F: @: ?2 ?" q, X" f+ h: n - . g5 Z3 h/ Y" x( W3 w( `. e0 h
9 \* Z, T. b; i0 L! v2 A1 i+ K
复制代码
) }' m: \" p' ~$ G+ o相关文章推荐:
" `; Y- M) k# E/ {0 Y+ G. x1.PHP生成微信二维码实例
3 |/ H, F0 u& i+ j% P& i3 Z, x' U2.php网址转换生成二维码
; o+ C% O7 n2 v( \. }$ H相关视频推荐:! s/ h' y) C }/ ]- s
1.独孤九贱(4)_PHP视频教程: G A4 v" L5 G A- F7 s
二、JQUERY生成QR CODE$ S$ b! n8 V( m6 S `
源码地址:https://github.com/jeromeetienne/jquery-qrcode
7 h& w- V, l" E
) ]+ H3 |' q4 j9 H0 qjquery_create.php( Z/ A% P X% E
" [( _* w" L: q$ V X- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 % W- \1 T6 i) ?- J# {
三、PHP识别二维码
+ ]4 ?& P& a0 g h y4 }1、方法一. Y. K! X; }: C A7 x
环境需求,安装如下扩展
# p1 T0 R- _0 m" {( ]- ImageMagick
" [& o. @# s& L Q6 i+ M" E- zbar! [9 I, [0 \# u$ U
- php-zbarcode
: k+ r/ y$ ] {+ H6 o4 s% z6 y
1 G A& d% I5 \& V# c2、方法二
$ }. S( M3 |& ]4 Z* WPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
4 k7 r0 t8 N) Z0 O' M+ h6 o! xqrReader类:https://github.com/baagee/php_QrReader+ O% ~, A: q7 X0 ^0 D2 l- l& R g
, E2 {2 r3 `! T) d; }) T- N
; Q/ b! q/ u* `- N/ I: {- $qrcode = new QrReader('./test_logo.png'); //图片路径4 m. p% n8 e2 c/ P5 g
' p4 n& c1 F: U9 n% m. b- $text = $qrcode->text(); //返回识别后的文本
; ]/ R3 C2 r- U2 S5 G
* G5 W/ n4 j# O9 q- W0 W$ {4 h$ S- echo $text;8 {- g8 @' W. g) s
& J: _, k8 W- J# |; ~$ Y8 ^- % g Z) R% q! F8 A$ ?4 d" ~" _
复制代码
j+ |" P: \0 j7 Z链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7$ L6 _- W: i. ^
, t% ]) V6 C/ Q9 s# U% ?
+ ^3 a8 e* L) H6 L; f6 ]2 ]; L. M2 D4 W/ H/ @+ o8 T
' t2 _' y1 M" |* k- V- M3 y6 e9 @/ {' f# e( d
2 q( e7 K( d" m: v$ M
! h y$ B/ [" _6 u; C2 y3 p' x. w, j3 U4 Y: }; s- }$ ?
; x+ A3 |& Z/ J2 e% F |
|