管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
& I+ \; l5 M: }- {! w---------------------------------------------------------------------------------------------------" o3 e$ G Q8 F
二维码的分类
2 W) z" Q" _- ^4 T% F! } X" k线性堆叠式二维码# D8 g Z) e" u. Q
6 K) f) ~: @' [; t/ o矩阵式二维码' f* E' B$ `% [, q
! S y Z% N' v. K/ }
二维码的优缺点
" l. U0 V: Z" N* D优点; S9 s t' V* q6 x% R$ r* M
信息容量大
4 K6 ]! R- `* N* d9 o* v/ s& T i
编码范围广
; X4 O" q" v+ m! s, M& D; Q; F% r n- b9 q' f* [
容错能力强
1 `( J( s; i4 _* C
W5 g6 T- U* K/ K$ p译码可靠性高% f0 n$ E+ a* a/ Z1 v/ B
0 p/ r& k0 }; M- Y& f! v! o/ Q可引入加密措施
: o* _: J# n( K7 q) z: K6 M' c( o" I# Y( H8 k
成本低,易制作
) c5 q9 H r& L, W7 {5 `
! G7 S9 h7 I( v) P! V8 T: T缺点
+ }2 a/ K$ }4 S t二维码技术成为手机病毒、钓鱼网站传播的新渠道# R; W3 R& \ O) s0 G1 m# a8 J
! u2 ?$ {0 x3 u* T' s3 v
信息泄密; `, m! a5 s7 A4 a i0 O
. g9 i# T9 [4 p @ R目前流行的三大国际标准8 ~8 U3 @) Q7 d6 u! R8 [4 [
PDF417:不支持中文
* y r5 U6 Y; N1 B$ e8 u$ i+ D* h! W: X4 q
DM:专利未公开,需支付专利费用7 @7 o) ~' |5 ^4 U* G
/ n! p5 i2 j2 A! g- I! [5 k
QR CODE:专利公开,支持中文
6 U# ?; A+ D w( \* U; n. j/ {) l! r, k" q* C1 m+ P4 {0 O
QR CODE 纠错能力
6 Q7 I- l# Q4 ^2 g6 ]+ ~L级:约可纠错7%的数据码字
/ A* P& G5 ]0 O* K$ h8 e+ `6 ]' {* G. B4 |
M级:约可纠错15%的数据码字
$ F3 }. u/ b; \7 C _) y% O5 R+ J. e3 I i6 u( z
Q级:约可纠错25%的数据码字
/ E8 C- O' Q# z v+ E0 X: P8 n" l# @+ u0 w/ q* j
H级:约可纠错30%的数据码字
/ T8 `+ @0 |( c4 c& r6 _- a4 r& `0 n, E
前提条件
/ K. {6 N, P' b* t3 \GD库
' ~8 X- Q6 ?5 ^# I8 J; }$ w& H) x+ b: Z5 V o- V/ b. L2 v. n" }
一、PHP生成QR CODE/ x$ |0 |' ^$ S' l/ `1 ?8 o) e( z
官网:http://phpqrcode.sourceforge.net/
& [0 h! H0 y) Q" Q8 E, C% P3 F/ [" T5 p L- O. l* x
下载源码:https://github.com/endroid/qr-code/ o5 K3 E3 A% U$ T
9 p4 Q& G, U9 d# |
目录结构3 x6 I0 p! J$ G9 [
* G* R; b& G8 s, c
: u" B* P% m% W4 G3 h& ?: O9 B
1、qrcode_create.php3 q0 z3 U4 f" J1 B3 i' {
ps:生成普通二维码
' v5 u; ^3 @4 A+ [8 P2 [
) J; N0 J! M! P" m4 I, k- include_once "./qrcode/phpqrcode.php";/**3 |# M& D6 m$ A' F. L0 s$ }0 n. n! o
( Z9 q" |0 i# y; O0 v( {- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
9 f( p1 C; X) e j. O( R& y/ } - 0 c/ \! H' Y: l1 ~6 ~1 G
- * 在浏览器上直接生成一个二维码(内容为abc)
; x- ~# t) y" ?) y: I4 U6 _) V - 4 O5 n' e% ]; E) h z* N
- */QRcode::png("abc");# K; v* _& e2 i1 Z) W
2 K U! p$ a2 z! Z' @: S- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**, R9 p- j1 k! [; a; v6 C9 t
0 K9 f' k; f. k- * 生成文件到本地
- l8 q, [3 H. |. M T+ q - 0 k% |$ a* ]3 n( I" X" h j/ t
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)8 g( z: E7 T, W9 o7 [% Y1 c
- 9 n, X6 y8 B) U) V
- * PS:$saveandprint源码的p6参数做了修改$ B% A1 u. ?& `! B, `
$ o2 _. w/ I0 k2 h- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);& R5 t& L5 I2 m: c& B. i# @
- + @& r# c% e. [; r* ?% o$ b; S
% z5 e2 P1 z! u( O# R# \" q' f% _
复制代码
% o4 O" I. x: X3 }4 K" m2、qrcode_logo.php
9 z) Z$ |3 i& C. R5 ^ A; Gps:生成带Logo的二维码
% Q( d6 P4 ~+ L5 ]$ ? G0 u+ k- /**
& ~1 ^5 i, O x7 A$ N! c2 t u+ n4 U
* X, O* }( b1 X8 `! l! X- * Created by PhpStorm.7 O7 z6 V) Y, f6 N, d
- 6 E% h4 N( w! f/ B
- * User: user: @+ g2 _8 g1 S5 A
1 I7 A: z6 O7 M% f0 v6 B- * Date: 2018/8/162 M8 J! e$ o+ g. k4 b, z
- 3 Z- s, C6 _3 `4 i1 T2 V
- * Time: 10:43
. z4 u9 l0 y9 Z- H
- m2 V# e8 F5 p% i7 v- */include "./qrcode/phpqrcode.php";$txt = "测试内容";
8 V5 [0 F2 L" ^* I# s- j
- {% }' K3 o4 e1 j- P- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称; [! M' g5 {: S5 U
) q5 M6 t% h0 }3 d9 j+ Q7 j- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
& |& I% f' v( G: v1 ] - 9 ^" D& E& D6 L7 ?8 E1 ~; D
- $margin = 2;//边距, L/ M: |* {6 T
- D6 \# b7 e5 w X# c7 X6 r2 Y0 G
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
5 [+ e% ]2 c& I4 R! P5 A& a% I( w# `) | - ; V$ n6 i9 x/ p2 j" l
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ , g) ] t8 L5 m( _2 q6 R: N" M: P1 S/ [$ q
0 s( ]0 m' O6 O! U- $QR = $picPathAndName; //已经生成的原始二维码图
9 y! s P& q' y6 ^: F
3 v: _! ^2 V. \' s& q3 Q) M L- $Logo = './pic/logo.png'; $ x! e/ P. B* Z( L# x; G$ C$ S
- 2 m) [. i4 B3 F4 x7 C7 E1 r5 ~
- $Logo_re = './pic/test_logo.png';
9 ~/ u& G3 J! ]6 e
$ h& p5 q8 S, m, [- $QR = imagecreatefromstring(file_get_contents($QR));
" C8 h/ l9 p+ p4 P
* a% N/ `/ Z2 e- $Logo = imagecreatefromstring(file_get_contents($Logo)); - `" b/ A. N; V" Z- d5 _6 C. p8 j: b
- 3 m5 f$ V, I+ ]+ V' ~1 k8 e
- $QR_width = imagesx($QR); //二维码图片宽度6 R3 ?1 L z5 Q& M6 g% ~9 ?( R# T
- ) c, M2 |; t$ [, ]! w9 }
- $QR_height = imagesy($QR); //二维码图片高度
# V1 g+ F# |0 a4 t# x
. u1 {4 i) h. j- M- G7 l, `1 w- $logo_width = imagesx($Logo); //logo图片宽度: }; f, [- S# C" \: c
- 6 w9 D7 P4 n- D# _. ]+ b
- $logo_height = imagesy($Logo); //logo图片高度3 \ P% B( o- S" [: F
- " S% C+ g- G2 P& M% s
- $logo_qr_width = $QR_width / 5; 4 }% f& g0 }+ H( Y) N
3 @% @+ f' @% @" a- $scale = $logo_width / $logo_qr_width;
& q4 C8 B% h. \: Q% ?* `8 \- J2 x - 0 w6 N6 A' I( z7 v- C# j
- $logo_qr_height = $logo_height / $scale; 0 b0 N, Z+ g9 x( s! y: U
, E# I- `+ b7 `$ t- V- $from_width = ($QR_width - $logo_qr_width) / 2;
8 c; r7 J" X, i8 U/ ^ a
' a* A- ^: C* z+ M" B0 Z2 T- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
/ V7 @- k! M5 o7 j
- r7 n7 U# ^/ ^( u; a9 \8 I- //输出图片
2 M! o" b4 i% K5 ~. j - ( Y( U7 a P' r1 [8 C) W. G* q
- imagepng($QR, $Logo_re);2 w% ?! T0 g& G7 x
. ~) T- X2 v9 s. I- }. P/ |9 r4 m! _4 Q- k9 f0 ~
* ]# O3 S3 }7 T% l- - x# Q4 e* B) r. U0 @3 e8 x
复制代码 3、qrcode_vcard.php (生成电子签名)
4 `: D: o! I( [- ]# L6 u( l4 f( A3 l j6 k0 g
vCard格式:https://zh.wikipedia.org/wiki/VCard
. v; i3 [* B. }* m( Q7 e/ w$ } X }/ b
- 5 ~' ?6 {4 a' q0 p. K' x
- * Created by PhpStorm.
0 A4 u0 y. q e9 I9 O% s$ [
6 d, `, r+ q4 i- u! p1 D- * User: user
6 G9 E2 v5 Y0 I1 @ - + P0 B4 r7 |9 @7 f+ v6 G/ U
- * Date: 2018/8/15' ]# N5 J; m, B& T
- # H5 C: {9 W2 Y! _* m _+ M
- * Time: 23:00' R; H4 g% L3 n' j& Z. j
. J+ e0 F( C4 e5 A3 k0 L- */require_once "./qrcode/phpqrcode.php";/** o4 X$ w- o/ p/ J% i; n
- - _" _2 n3 R8 f8 i; Z# p" ?
- * 生成电子签名
5 O' ]: h# p( P$ M* e" T
) L' {' n5 h) A" V ~. V9 c- * PS;使用微信扫描二维码
! `# ~' a4 X4 X/ e3 n9 l
) c/ p' w& N+ E' t6 ~- */$content = 'BEGIN:VCARD' . "\n";//起始标志& G6 T6 K0 \& Y) I' r
- ! x) u1 e$ F: a5 D6 ^
- $content .= 'VERSION:2.1' . "\n";//当前版本
! g: C8 B" C9 _4 ~- {* E
6 j R0 ?( C; \- B; t- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
0 M( H$ D ~4 v - 3 i4 E; _$ D* w( ?4 D+ o" q
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称8 V, G w, n' O/ |9 F& y
- 1 E- D. a" e _! E* }% s$ B8 K2 ]% `
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
r7 C+ s, F- z, f) k# {
& B k2 ~( p0 ]4 o6 H- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
1 U8 d% G* Y" m1 A5 ?* ]4 G6 f
+ m1 I H" u0 a; @- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址( `2 T, Q3 U" d7 [
- $ w3 y& u7 ]$ ~
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)& d9 k( a) h; n! v
- - b4 R$ [8 k: b5 f. d" u7 ~
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
1 }: s2 n9 O8 r9 F - 5 J+ {' ~2 C' K4 w! `. G7 n7 R
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
) H3 H, ]5 u* h' B0 x. I - 7 Y" R* I' i, K4 }5 }
- $content .= 'URL:www.baidu.com' . "\n";//个人主页0 `& Y5 G {* `! Y% H
- * k' [7 H/ T, \7 Q* T5 e
- $content .= 'END:VCARD' . "\n";//结束标志
( I m5 P+ ?) I! z* W
0 f) a$ u9 @+ [3 J, l" M Q, ^# ?6 S1 g- QRcode::png($content);/ ^3 Z- Z$ @, t5 Y. l; Z1 x
( {8 L8 R& P+ T5 D/ d7 y1 V. H. a- / P7 g2 `% ]* t! w5 s
复制代码
/ E6 E: e- l) K5 `: M2 c' h* o相关文章推荐:
+ H; k' A" F7 i1.PHP生成微信二维码实例
. s* X- z, j" _1 e* `) S7 I; ?2.php网址转换生成二维码% j) k2 _3 d8 t/ Y
相关视频推荐:# Q5 i; i. W( }. v- u, i) h8 @) o. h
1.独孤九贱(4)_PHP视频教程# A/ _+ I7 u) F' ^* [* ?/ I7 C F9 ?
二、JQUERY生成QR CODE8 N0 r2 W) `/ Z! _7 r: M/ Q0 |5 l) L
源码地址:https://github.com/jeromeetienne/jquery-qrcode
/ N: C" z1 u1 ^7 W5 T4 r* U* s& B' S* _
jquery_create.php3 B: X- {7 y3 z. q5 U! \! l
, [' \! T1 @" A- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
7 u% H! G5 l& ~' U% m% x! G% Q9 s三、PHP识别二维码3 a7 Y4 ~! G9 U0 S# A3 V1 c
1、方法一; Y/ D$ f) V$ \- t/ {
环境需求,安装如下扩展8 S# c* q7 ]$ R1 n3 ~& l
- ImageMagick3 ~6 G) L& `3 \1 n$ ]. x& @
- zbar7 ?6 a( ], t! W1 p; _% b
- php-zbarcode
1 Q4 v1 \# N5 P* w( f7 s) o2 K I
/ ?, w2 ^: V' b" W! l2、方法二
+ j3 K. l/ v% t6 c2 ^) p2 ?, Z. a4 mPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
% K, E1 `% w5 S" pqrReader类:https://github.com/baagee/php_QrReader
. f; e3 F1 i# j/ r
) n4 q' M' D3 i
% U6 n* W! a4 o) {) a9 t$ b0 h7 f& C4 A2 Y- $qrcode = new QrReader('./test_logo.png'); //图片路径
! S9 \+ M/ |# Q# N, M - ( ]2 e6 Y& d2 ~5 y
- $text = $qrcode->text(); //返回识别后的文本
$ e1 {9 g& ?3 k/ a( M( l
! T) ^3 U6 f0 z. K" v+ }- echo $text;4 e0 F8 T2 I+ x$ i
- 1 U: F9 D5 Y8 a* B% u
- 6 A/ g( t2 u) L3 l
复制代码 0 c3 W+ a: G, E. Y$ A- u
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y70 ]0 e5 d9 u+ u; [* h) l4 ~
8 K+ _3 {* H; b Q/ _2 v/ \! w: }' o" ~2 v R4 \; t
+ B& W( x3 c" n* f3 N
6 n, C4 b, P u, S. {
. i+ C& `9 i: Z0 n/ \6 k3 y2 A9 f7 b
: Z6 Z5 b0 @5 j
V1 ?" T, B. r0 ~) |! E, b0 l5 l# O! g2 j1 O( v8 o
/ l9 }( V2 m- K/ N% U |
|