管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
! U% Z2 m& b) h* P$ K6 u P---------------------------------------------------------------------------------------------------- e: m; Z) P% l! ] P
二维码的分类7 w( g- g3 }6 j/ \
线性堆叠式二维码: B2 o- j2 f7 t, c* ]: k( |
5 |+ f" g# J6 m. c2 n矩阵式二维码9 M) L1 q# J5 f: L6 w6 z' O% H) f9 k
3 j3 |6 D, l7 W4 l二维码的优缺点/ k8 b4 {/ Z/ E1 ^3 p3 [
优点
G& S: i4 @, K( @" [1 m J- G信息容量大
$ K+ N- {# T- r, F6 x8 K2 Z) K- b1 r& O( `$ D
编码范围广 u& a* \# e1 g3 i o
8 N+ C4 m' h9 Y* m容错能力强
. u1 A* P2 L$ [. |2 v
4 p* @$ |7 `% v译码可靠性高) ]7 L+ G4 k: v/ a1 p
( M) Y9 v* K! V可引入加密措施
! r( K0 b5 o. N, B0 Z: b, U8 ?+ B
成本低,易制作
/ J. C2 c, F6 t* D/ q+ I; f" q: ~# f# y- `/ Q/ b; p6 ^2 q* ^
缺点- h8 J- F2 F) E G; R4 g% Y
二维码技术成为手机病毒、钓鱼网站传播的新渠道' T$ q* |: k4 c' o2 O: M4 n
# X0 f2 H5 R) L5 z信息泄密 C# J, |% H: b. X2 g
; g$ i, U5 s* J+ t目前流行的三大国际标准3 h' ~0 t8 _' ~5 \" c2 W
PDF417:不支持中文
0 \! ? W, H+ b) U
& c" [- s# O; s- M& m- fDM:专利未公开,需支付专利费用
2 V- B, S1 H' E+ f
# ^# Q6 M2 v5 b; [QR CODE:专利公开,支持中文' h u3 i- S! ~+ H
7 d) ?' H. E5 E# ]QR CODE 纠错能力
1 P* M& p# b9 {% \, HL级:约可纠错7%的数据码字
/ s) V% ~; J- h% [9 O3 ]1 ]. h4 e! Q. j- L9 S
M级:约可纠错15%的数据码字
5 l$ S( C$ e' O6 P+ k- c" y, ^% p0 s$ B( \/ f
Q级:约可纠错25%的数据码字
7 n& w8 }# z8 J- M
* @7 t( J7 j' P. H/ B# lH级:约可纠错30%的数据码字
" c3 z" f+ D% ]+ _
" f9 b3 D3 x! i/ H前提条件+ O+ g/ B5 _1 ?4 g
GD库
# Y& ^8 D2 i. W8 R* h' H, ?* R; w! a! u2 i
一、PHP生成QR CODE
6 c* n9 T( f2 e! y7 W/ V官网:http://phpqrcode.sourceforge.net/4 c9 n/ r& K; u0 W4 k
" |- X# B Z% f+ |0 E; q' T下载源码:https://github.com/endroid/qr-code
3 k, b" i+ ^7 X7 L6 U
+ m/ a+ o+ ~5 [& K目录结构" |# Y/ h" g8 {0 i, J
, s# b8 a+ p) ?9 N
6 B' B0 ?" j" D2 _1、qrcode_create.php! u0 h! _8 ~0 ~) e( y) z* M- p
ps:生成普通二维码
; r3 y. \4 Z7 M3 h* k! D
8 r& j+ b& z/ I4 h0 d- include_once "./qrcode/phpqrcode.php";/**
' ~( U5 B. G( p5 U K - ! K& f& m- b) Z5 h. Q
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径) p* n: a2 g5 ~: j# }& O
4 C/ w9 ^. m h# \6 r- * 在浏览器上直接生成一个二维码(内容为abc)
) L) o5 d: Q; [! `% v - " @( R# C) Y& S! Q
- */QRcode::png("abc");
( y) y# Q# d" v* E4 _9 u
2 s% g) ~6 Q5 u1 m5 S- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**2 T8 Z3 B$ T8 J7 {. v% w( P
$ X# a% i2 c/ F1 Q, d) K/ r* A- * 生成文件到本地0 \* k3 k) M4 [4 e
- 8 p7 j* a$ r1 [9 Z, {4 h% D
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)8 J1 r5 U0 k: N$ {- H1 W% ?; ]0 r8 R
1 _; ?2 C+ ]/ A6 D- * PS:$saveandprint源码的p6参数做了修改& @ @( r1 t T4 L
$ p. S1 B9 ^" c) L) Y- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
$ b9 \6 y; c% x- K! } - , p/ ]2 @% L/ w' e4 D5 v
J& S3 Q z0 F, G3 u+ D
复制代码 1 V9 J1 }! ?1 s- b. g" E2 [
2、qrcode_logo.php
; X6 s; \6 Z. O s7 ?1 l. Tps:生成带Logo的二维码
7 l9 P/ e/ n: I5 R- /**
/ v4 u* j& ~- s8 ?6 G! u& r - 3 {1 r8 g2 K5 C) ^3 k
- * Created by PhpStorm.
9 E$ K' p6 P* l8 _; S1 ` - ; I. r+ |0 y3 J
- * User: user# T% V( W7 d9 F5 M
- - @) S! x5 } {5 B# L% _- ]: K/ }
- * Date: 2018/8/16
2 Y0 R0 ?' J+ [1 Z
5 i. Y# \6 x5 F- * Time: 10:43
6 h3 W @0 |6 B2 h4 i" A& A2 ` - 2 I, }% p4 Q) ~+ R
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";
- U( G4 W7 B5 N( R- x
+ f" ?* P" C. C2 b- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
. M, k% P- A8 b
) N0 [ L. H F" L% T! R2 q- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是+ m" D; I; p$ i) U# m0 S
- $ ]) p! t$ H3 r! W" \* j& H) Q
- $margin = 2;//边距
1 @" {8 p2 V \+ {
! i- q5 s( x$ W9 f- ~4 w- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
2 {! y" R8 f4 {- P) h
1 V2 l. l. G9 O* |6 J; x- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
y0 v' I/ f1 {( A# }# D$ X
6 A+ v/ I4 v2 o n6 R5 S5 W- $QR = $picPathAndName; //已经生成的原始二维码图
8 u& G6 z+ f$ ^6 D) N - & u5 A2 Z2 M2 S. {9 F& C
- $Logo = './pic/logo.png'; * S; H2 i! p+ e g1 n
- $ `0 f5 K1 D/ U- N0 \( ^
- $Logo_re = './pic/test_logo.png';
3 R0 @: m; r/ e& U3 H
) H( J2 V4 S9 j- Y( f- $QR = imagecreatefromstring(file_get_contents($QR)); # P0 ]7 X# M/ {: [& \
- 6 d. K: e* O# g$ V7 g% u2 Z3 u+ _
- $Logo = imagecreatefromstring(file_get_contents($Logo));
& l: ]4 `/ W4 J. M5 J# _; | - * N& I( z4 J" b% I: q5 M
- $QR_width = imagesx($QR); //二维码图片宽度0 n; p* R$ M# ?1 d& f* n3 W- O
* D. f0 ^) ~- k3 M5 A- $QR_height = imagesy($QR); //二维码图片高度& A8 _' \8 j" Y0 [( m4 E
" a/ _$ W$ d2 ^- $logo_width = imagesx($Logo); //logo图片宽度" _ J! X# A" B6 e
# ~; P7 Q( \% P+ i- $logo_height = imagesy($Logo); //logo图片高度8 R6 V+ ?9 T' g7 |# T" _
4 S/ D# D. s! k4 e5 }- $logo_qr_width = $QR_width / 5;
% l, C! [" ]! a, C& t0 ^" V
3 q* x" h& j$ Y) r, R% F; l- $scale = $logo_width / $logo_qr_width;
/ @0 q( w2 d3 H4 u$ [
3 u5 f: Y' d* T- $logo_qr_height = $logo_height / $scale; 4 y, m8 o' v( G0 D8 }0 Z1 k1 m
- 7 V" z z- r( s S0 E: q |
- $from_width = ($QR_width - $logo_qr_width) / 2;+ Y3 h' U9 W5 u* I7 Q
4 C) D4 p/ u2 n. |( ^' f% p- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
& S6 u* |" a9 v5 Y; J
: J* R/ E& a8 d5 T2 f. c- //输出图片- [. K& } G- o% W& P2 }
4 w; D1 l' r9 t+ G: I- imagepng($QR, $Logo_re);' J' z; z* `9 \* G
' g8 S# e' v/ a/ K. P$ g, b- }
$ K+ p9 H- p" S5 K( n( a
! h4 M& H; B2 x7 g% ~& g
8 ]$ L2 A0 ^' r# O
复制代码 3、qrcode_vcard.php (生成电子签名). e: Z+ _+ L' q: J& m( C3 b
( \+ ?8 G0 x4 z+ b" M/ TvCard格式:https://zh.wikipedia.org/wiki/VCard9 c& o& s( r5 q' A. W% P
' c1 b0 A0 J7 l: k7 G6 N R
1 |5 @ U' M! D- M/ m1 b) Z% b5 t- * Created by PhpStorm.
( K! J5 g5 [, }# \ S9 v
, v; }) e2 E- x, x- * User: user
; o$ J( Q4 |! ^+ e: z& e* A
) M: t" M& o: O* T- * Date: 2018/8/15' j7 Q1 R, n0 \3 L3 r: q
- & w; q2 O9 I+ G O4 Z: K
- * Time: 23:00
* l" y, \1 x3 q# G+ ?! r
4 ~/ _" n% y% a6 d m- */require_once "./qrcode/phpqrcode.php";/**
3 F$ g4 y# Y5 x4 {8 X - ' E0 h. D: E0 H: S$ o
- * 生成电子签名
: x; p7 C: M% t* y8 U$ k - $ R7 `- n. I' _2 j9 @& W$ `. Z
- * PS;使用微信扫描二维码
! D3 L, J( F8 k1 H1 K8 {5 b - & V* s7 e' v2 Z0 [
- */$content = 'BEGIN:VCARD' . "\n";//起始标志" Z. j$ H8 N/ k; S1 Y- T
* { v' I. W: T8 V- $content .= 'VERSION:2.1' . "\n";//当前版本
! P; ~' r8 t6 z# V - ' V, V5 ? [5 j8 t
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名3 ^6 z h+ ^/ y/ L( e4 w; V, D. Y6 G
. y* x2 q$ l# U5 c7 t- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
9 B) c! O, B* ~ t# T6 [
8 n3 V$ |8 d: |2 P: a# O- $content .= 'TITLE:PHP研发程序员' . "\n";//职位; I: y+ N& C- |2 }4 S: _' N# n
0 g- F' F) H% a- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话1 W( o/ M( b* C$ E8 ~
- ' W) e F+ [( P# C8 F( P* ?0 r+ Z2 z' b( U
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址" P! l Q N6 o6 S* t4 y) k
4 P/ \- H1 o$ V7 q% F0 `- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)# h2 G0 R9 b* R! g1 @& e
0 N. i0 A; U* t: z- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话! C) N; @6 r" }" a
- , B& @: m4 Z! }* d
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱; U% A, T0 \ w0 `: ~8 p& ]' N3 L
- 1 X, O7 f7 T y: p- a
- $content .= 'URL:www.baidu.com' . "\n";//个人主页
1 Q: K/ T& ]) _% X* d - T! ^% \9 `4 F3 }; I
- $content .= 'END:VCARD' . "\n";//结束标志
- G7 |9 G5 I9 b4 z& N; N8 Q* y
1 ?, ^1 {4 }" }! J8 x- D4 d5 a- QRcode::png($content);3 Q; E! W! ^+ i
- 9 V& }3 a1 W) g+ h6 k6 }
- 4 M( ?! d0 |2 h: f3 s
复制代码 ' E3 a/ e) A6 q! A' b/ ~
相关文章推荐:. @0 M& {: X* f9 N/ j3 b \
1.PHP生成微信二维码实例
1 n3 ?! J6 H8 d2.php网址转换生成二维码. Z" E! P6 {6 e
相关视频推荐:
4 D( o* X- Y. z$ n1.独孤九贱(4)_PHP视频教程
* P& a1 p- S$ O( h二、JQUERY生成QR CODE
5 B& u6 ?. b' }1 L' q源码地址:https://github.com/jeromeetienne/jquery-qrcode8 _9 ?% O) _2 ^3 j; \3 c- q
! g# U" ?2 s2 j M# P9 k7 Tjquery_create.php
% l! P; u. e" @8 |. I9 c
) ~5 X$ j8 R% E- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 & n1 Y! Q0 l2 }$ h% }
三、PHP识别二维码! j) B q) ]+ B' x( ?4 V
1、方法一9 w1 Y2 y- n$ Q, I
环境需求,安装如下扩展
4 n8 Q" g! I0 P2 `- ImageMagick1 S2 }. \' g f# f& D
- zbar: O0 W! t" t5 ~% V3 [! s9 f
- php-zbarcode ~! I( t8 Y8 D! I& K( B
3 x5 g4 }. \- N: L. C6 S$ i2、方法二7 R+ @0 W6 T0 ?5 N. s& K
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
( z! ]% C7 t$ j E( Z1 FqrReader类:https://github.com/baagee/php_QrReader* a" ~( p% t0 y3 ^) S; ?
1 h" O9 s% @/ z. }9 t8 X) ~+ }- : |* O/ D6 @7 C6 ?9 E/ \& G& j
- $qrcode = new QrReader('./test_logo.png'); //图片路径
6 I( Q( ]* Z# k8 v - 5 n$ x( o0 M ?7 C) C6 C8 h
- $text = $qrcode->text(); //返回识别后的文本
! U) y0 S% A8 T8 F3 y- [- _ - ) E+ M ^, D. u/ |1 z5 n4 w
- echo $text;
; g7 ?+ P/ j9 v7 K
) q: a3 `! W( g9 w+ b2 S* @- 0 E! g% n: \$ }6 \9 z0 ^
复制代码 % `) z% w* P% F, {. m
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
( s3 |# e( g6 a8 P6 W; |& Q6 F5 b; }# k! i' [
1 O3 y) y1 {2 q- C( O; Q+ c
1 w) a. R, G: y j, K B/ i
) m1 g! c- d. m5 A3 Z( \; s' _0 w
m$ f% J0 a3 D0 r
+ t. s T; d" Y) p$ Q- n* a& C3 F0 [+ }2 T
/ G2 u# i" H7 R6 E# l
+ u- u! T; F' |1 x: D4 ` |
|