管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
3 I7 i) C, y$ u# q- ^8 _# R---------------------------------------------------------------------------------------------------3 h/ S( E% Q& R# D! m" C S, |- [0 c
二维码的分类4 g' X( {) V. {' E
线性堆叠式二维码, a- T- q6 m% H* `# {/ H! p
4 ~) J P6 R! {0 u! `
矩阵式二维码
1 ^3 t5 y: l9 h/ ]
+ \$ ~1 `8 i4 c/ S- d二维码的优缺点; Z5 m1 ]3 K0 {
优点% m3 g& {$ ^* x& l/ b
信息容量大# e: q+ ~& P3 w& D
% I0 Y: v0 w8 r( S u编码范围广
9 H; y8 M" x5 B8 ]! M( ]
`2 d. s% b9 a+ @$ S容错能力强3 h* _2 M- T5 _- p J, [
' H9 ?5 `3 }1 Q: u% g% w译码可靠性高3 t1 |7 {& Q5 ?+ r! ^
. G9 e* f/ i9 X; G
可引入加密措施
0 e( [6 z+ P* A9 R6 C( z. G; X
1 g3 S# k1 a- t成本低,易制作
* ]5 o1 e2 }' H: Y# n
6 Z! a6 r; K5 b3 m5 a1 b$ c缺点
) Y3 K& u7 `, {二维码技术成为手机病毒、钓鱼网站传播的新渠道
( [( Z z% P8 Y" h# L5 p- S) [1 O5 N+ v# T; @" f$ F
信息泄密
- t# X0 J L0 g. i; |2 e s% O, n! N* a
目前流行的三大国际标准, p: K; n: N! T8 ^
PDF417:不支持中文
% X* C* s( E- k2 [/ u* U
/ _ Y( y+ M; X. B. i9 D3 |2 @DM:专利未公开,需支付专利费用( n( T3 _* |, j) @, ^! J
2 ] ~, K! i3 L; Q) t, R6 I
QR CODE:专利公开,支持中文
% V$ M6 y4 ^8 s0 Y" G
! q! Z* v, j; i2 EQR CODE 纠错能力9 A: f9 ^6 u* [- c
L级:约可纠错7%的数据码字
5 p3 W; p0 A3 p- {* D2 \% t5 j6 v0 o( V2 h- y5 X7 T
M级:约可纠错15%的数据码字
5 b7 m: D3 A# D2 C- b( e% D! p+ |: R+ F9 |7 y$ x4 B# L: ]
Q级:约可纠错25%的数据码字
5 D1 U7 ~" T+ S K0 S& A( F! ?) y
+ x( a( J. k( ~9 Z" zH级:约可纠错30%的数据码字
; g3 e7 L! ]. J7 R8 r7 J0 x
, J% K3 a4 Z& n前提条件
% [7 M7 o% p( kGD库# |2 `$ M3 F* v* {: y. F' `% V" O7 [
; E# u" d) @/ W# j$ {) z一、PHP生成QR CODE
J4 h# l5 j3 g7 y7 Q/ x- J官网:http://phpqrcode.sourceforge.net/
7 t) R# k; c0 W6 v3 T) {5 J$ C& o# y5 q' n4 y. u! }5 }
下载源码:https://github.com/endroid/qr-code3 e, D" z% e u% G% N$ c2 M1 |# U
" x! }+ |% Q3 E! Z# w3 s: J) l7 I
目录结构6 Y" G' i' D" S( Z$ {
8 P; m1 v a1 F. V1 C- S' ?4 K: p% s
1、qrcode_create.php
/ ^" r x5 c0 h! e3 Y- kps:生成普通二维码% e8 k# X5 k$ Q6 j0 K# S9 m3 L$ y
' E; [3 {8 h* _; N7 O- include_once "./qrcode/phpqrcode.php";/**
/ O) ?; B) ^4 }5 v8 T' e v* p+ l& D
. C- g2 t0 ^9 M* n. l- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
9 N# i+ ~4 Q7 ]# S1 B4 ` - 1 C6 P# ?# y1 e' C* X
- * 在浏览器上直接生成一个二维码(内容为abc)
P* M1 b% l$ o N
9 `8 b2 h0 C; R- */QRcode::png("abc");
8 V6 e8 b* s7 b% I - + V2 y! m4 J, _& _) ?5 X2 H
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
$ U6 r1 r! q k; c; Z - " s1 f! m+ N$ @: o
- * 生成文件到本地
' C4 W# l6 o$ Z7 @! N - 0 `% l8 L: ]! ~8 s8 S! _. c- @
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
/ h5 |; ?/ N7 o* Z6 m! r! S) j - . f( L1 c; {( T5 T3 m5 `
- * PS:$saveandprint源码的p6参数做了修改" B/ V; w- I. z* K" o
- 2 g3 C- k' b+ k/ c& k' U g9 M& S! e
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
, O2 D, `0 v. y6 k" c - ' p: K, {$ x9 ]0 m. y+ Q
' t5 K' _; k4 y: l* {: h t3 O
复制代码
; E3 ?4 f0 r6 Y! }' N. G2、qrcode_logo.php$ N: U7 E# `8 t+ o$ \7 o0 }( \/ ]) {
ps:生成带Logo的二维码- * H% b6 @6 g ~9 S* U& ~
- /**5 F( T1 t9 Y/ B z, J
8 ^) ~7 W4 E$ v. C! Q' J4 s- * Created by PhpStorm.
# V! m4 X5 |. ]" k/ U$ k4 }0 I
, `! E/ c8 p/ T- * User: user8 _: d" A% h, I+ m
- - \$ J$ X+ v* h3 u, v
- * Date: 2018/8/16
5 x9 `9 K5 L, [ - 4 p* B% S% O2 H2 M; a
- * Time: 10:43
% T# j8 E% ^( T4 c/ B; x& q9 h! I8 S - 9 {, Q. W/ A5 [9 P# x
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";
2 U0 f' t9 G6 ^3 o5 O+ J5 U - 3 q- x- {: Y, W7 U$ s
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
; x0 E3 v# K N/ r( i
( ?; a) ]* d- g- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是: O3 K( B1 z' p4 L9 R
- , u5 W: p% ]* q) C3 X
- $margin = 2;//边距
& }8 L7 L* @% M& Q* a - 1 J* [* Z7 M) v5 q1 m. d: a' p
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片0 s0 x! h8 f. q0 W' w$ Z s
- , ]7 [& W1 ^. u1 i
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ & D/ [* z8 [) c1 D
, J: b. D- @3 C4 p$ P ^- $QR = $picPathAndName; //已经生成的原始二维码图9 g* X7 A; a/ q* v8 r
3 O3 k7 X: Q- l0 u4 j- $Logo = './pic/logo.png';
$ L& f+ z% C" s+ G- R4 [ - 1 } H0 i4 } Q. @7 U
- $Logo_re = './pic/test_logo.png';
: x) w' R# I# C' u: X/ C( b
9 w5 P# N) `- J3 r$ F6 @- $QR = imagecreatefromstring(file_get_contents($QR));
( R$ a6 ?1 }+ k S* ]8 s+ C - 0 ]/ q) n" n; V" ^
- $Logo = imagecreatefromstring(file_get_contents($Logo)); 2 I! Z, o8 F* Z0 _" i Y4 ]6 C
- ) z' y9 a: S" |
- $QR_width = imagesx($QR); //二维码图片宽度
, O( }% Q! o+ Z. t - * a. j( x+ ~! {, L7 R7 j
- $QR_height = imagesy($QR); //二维码图片高度
' a2 A6 e- {4 N, \& L5 a+ q0 _ - ' D+ ^! r) U' L4 V& a/ ^
- $logo_width = imagesx($Logo); //logo图片宽度( x; Y% r ~8 ^+ K
4 h- Y- @% `4 a0 B. \ Y- $logo_height = imagesy($Logo); //logo图片高度
9 E. b: M. p. u y, K0 V - % b9 G( J& ~" w# ^1 n0 U% V% ]
- $logo_qr_width = $QR_width / 5; 0 h0 u7 h8 [, l" V) B
- ( @7 k$ |5 i3 p; A# k; B( h5 B
- $scale = $logo_width / $logo_qr_width;
/ P9 e) N6 P4 r O. k - 0 H- c! p5 H# L! G& A( k( F
- $logo_qr_height = $logo_height / $scale; 6 s- S3 I! e6 C3 |5 g
* J! u: K0 ]6 _5 t: {- i/ X: w9 m- $from_width = ($QR_width - $logo_qr_width) / 2;
U! F J, z5 ^ A* [0 a2 z* \
6 K5 _0 I: ^( ^$ v) n" [( |1 g- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); / }" I* y7 i( I4 R
1 M" O! m: [" f5 w, Z1 O- //输出图片
1 C' B' ?+ e( ]* }# V
* q6 X3 @7 x) Z7 a- imagepng($QR, $Logo_re);( D. ~' v8 s( f c( q
- : U( Z6 a2 V% [; W2 M3 R3 n
- }
3 o( ]" y9 S$ A* j5 J9 g+ e) u - % V7 T( N+ P8 [# r5 }
- 4 u/ O0 s8 ?. z) R% r) q7 U
复制代码 3、qrcode_vcard.php (生成电子签名)) r3 z; l3 \' R; t' K$ q
7 ]. M+ U' W8 ^6 C, Z
vCard格式:https://zh.wikipedia.org/wiki/VCard7 t9 g& X, [8 m# R9 C1 f( ~
Z$ L0 i* E% D# E+ ]' r- 3 `1 q5 T$ @. S" O% `$ ]
- * Created by PhpStorm.& R: U/ U0 T! _$ q- E
: _3 H! O$ t1 P$ }- * User: user8 E7 u2 {# z. p' d& b( V
- & R+ J6 f0 T+ _8 ^5 E V
- * Date: 2018/8/15
2 J( Q1 d' L) F$ M7 Z" ]2 ?0 b9 t
0 Q) X9 p4 D% l: c% z5 g3 J- * Time: 23:00
' T9 j5 L% C8 d) p - # ~2 N( U) Z4 I. C; o
- */require_once "./qrcode/phpqrcode.php";/**
' q! f- F3 d& c( Y% N2 s( z
/ G! b D' P5 e/ Z z! b0 x- * 生成电子签名9 S l4 h% A- f% X, x5 T
- + f2 w; k( X- k& O4 ~
- * PS;使用微信扫描二维码
9 O1 [' A! v m- n# v - / L! F5 e. z, p' s$ w; S) c
- */$content = 'BEGIN:VCARD' . "\n";//起始标志1 }2 h$ R7 C; o. ]$ J. C
. {; v, b3 [& s9 j+ N0 I- $content .= 'VERSION:2.1' . "\n";//当前版本
1 \0 b2 y1 I* l3 g1 S, g
7 w" T( m$ y# z; W0 k2 W6 G- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名, V G! f2 M4 j( i8 K+ O
+ Z" _8 B* |9 P8 e& l- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称8 V% w/ f. E- ^2 p
Y% p3 M; G7 z2 Q- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
- A- g, ?/ P+ K& l# Y - - e9 y" _: H6 c
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
P% X* d* L% j6 |# \8 x: R! T - 4 R: v5 C1 m* u$ T9 _) r, \
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址# N9 S& x6 W4 z, i. o6 {* `/ X
- & o& I4 Y' {: J1 B4 L8 C2 l7 Q
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)* e4 y; K W. l! L' ~7 v
& |" y, x( E1 Y. Z+ W- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
' N4 R4 n& o8 S2 J) x9 x; [6 n - 7 I( z- I" F* K& R: s
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
3 ]* p& U. O/ R7 m - ! S; v% j% R4 | W* f
- $content .= 'URL:www.baidu.com' . "\n";//个人主页
$ C, @7 f8 k/ U0 u5 o/ w- r - $ ^- w# H% M* V5 `
- $content .= 'END:VCARD' . "\n";//结束标志
3 b3 n3 F1 \* m L6 B. q - 4 c/ M1 ~5 T$ F- g" r0 c* Q& o
- QRcode::png($content);
3 q: b+ q) U5 ~, r: n - & L0 b; ?0 N" k# A
' M9 |- s( C( N
复制代码
5 h% V* a8 E' N7 N相关文章推荐:
2 I) n5 d# [- f5 g0 Q X1.PHP生成微信二维码实例
* @# E% O- e, k z& M$ z! f8 a) R5 X$ {2.php网址转换生成二维码
9 Y; _8 I1 j1 T4 L相关视频推荐:
' M4 y u# P+ ^( h4 z1 N1.独孤九贱(4)_PHP视频教程( c+ j( {" }" M. ~) g+ g
二、JQUERY生成QR CODE
: Z* v# Y2 N4 Z; P4 c源码地址:https://github.com/jeromeetienne/jquery-qrcode. L3 w+ f8 @6 c
% {; d9 a) h* |8 A8 fjquery_create.php
6 u2 K4 V; h; _, k
6 Z& c W, w0 `) x9 L- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 6 O3 w# k. {2 k
三、PHP识别二维码( i3 T5 R9 d4 m. O! E
1、方法一
5 F$ {5 D) Y Y1 Z6 k9 P环境需求,安装如下扩展& `+ `" s3 z6 C& }" j& K
- ImageMagick- r, Y E( n+ o Y5 b [% d
- zbar' j, {9 J; o9 k- ]5 d* M8 S8 Q
- php-zbarcode
9 x; l9 f {. i8 a: L2 i5 k/ L0 @# p) r3 J5 t, [
2、方法二
: N2 N4 R" Z& F6 Q; c5 TPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以* Y) o3 H9 @2 K* w
qrReader类:https://github.com/baagee/php_QrReader
1 x) k* r$ e8 y( Z3 a0 L0 ?" l/ v$ t ^6 {" ~2 L
/ z1 ?' Q& m' q3 w( {4 C2 `- $qrcode = new QrReader('./test_logo.png'); //图片路径
" M0 l1 {4 W6 ^4 P - 4 i3 f! _' i2 H+ D) b
- $text = $qrcode->text(); //返回识别后的文本
! r% q& I6 l3 G! _
) g: B$ o! P8 s8 q& u, A' b- echo $text;/ s6 L3 h5 u3 N3 O/ Y& o' U
/ k' k, I* V3 _- " C5 j/ k3 Z+ A- a
复制代码 9 s `. \( d: R" x6 X
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
: o1 ?8 V$ ?. G0 h# Y( r! w7 J
) A" A( e2 R7 g w1 Q; y
4 r Y5 i7 O4 j0 ^
1 |2 m, g. H( S) S
* n3 k+ o: l; w( b; D" e- u$ O! I0 I5 L a/ b$ T8 }
# [+ w! X7 w' `( j1 F/ s
9 f2 ?. B* b& A1 I! o. q4 r% I# X7 l* M+ b% D0 ^" t
# T2 v% g& H4 Q! N. ? |
|