本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
: C% E) S7 X6 |% K& s7 m---------------------------------------------------------------------------------------------------
' L/ }6 n3 S, C( z& ]" q二维码的分类; ^; ?8 e2 a% J7 B8 [
线性堆叠式二维码8 P8 d% T# t& j$ \& j
1 T9 m, G. W' n+ _) F) A
矩阵式二维码
% K- N' Q( h) M5 f
* y" Y1 y. |( [4 b二维码的优缺点1 d6 B' ^ A _) L0 @/ T/ E
优点 |( ?4 L! W# T$ Q ~
信息容量大; A7 D0 H* I# U- Y- q
0 z( E& [3 j+ [; x+ G
编码范围广
# E& S2 }/ Q& @# d& C
; X5 B, F/ m7 g t5 U! [容错能力强, R& V' g& u( V/ |$ I$ O- r' R
$ n- y3 e* h; U* t, f译码可靠性高! R7 {5 P% ]) ~* F! {) J5 _6 C0 e
8 Y2 _: c/ O4 R2 o
可引入加密措施
! T3 @9 T8 P# R( r* i
4 d- y9 F! V" Q3 Y) h8 {4 W成本低,易制作/ o- k/ h G# \5 u4 N- T
+ N3 X9 k2 S% D$ a! T* R, _缺点
0 a8 \! W% B5 U$ b: C二维码技术成为手机病毒、钓鱼网站传播的新渠道
4 x) P- O1 p! ]" ~9 x( N& X
9 `' s7 H' z/ ^; W; m" T信息泄密
3 D/ v k0 |* V+ O% Y$ i4 ~7 Y+ o
, `# T* ?& l* n( D7 y# Y目前流行的三大国际标准
( r5 N/ L' J! _% C' E5 zPDF417:不支持中文7 e$ m. d4 @; ]9 w
9 i+ v+ g! |8 ^
DM:专利未公开,需支付专利费用' A& b+ a7 D+ Q9 { u' I
5 G8 Q. x: M( e2 bQR CODE:专利公开,支持中文
9 @% E' s4 w7 z
' r& c4 f( m2 U9 p: Q6 @: P8 SQR CODE 纠错能力
8 p0 P( h* b4 o% f1 y- k, Q+ fL级:约可纠错7%的数据码字
' k$ W5 U: b. I% T: v9 q3 l& [- T j+ g2 {0 V. X
M级:约可纠错15%的数据码字
6 C, Y. M; G4 F: o8 x, C
% y6 u3 I+ t0 i9 y3 D7 hQ级:约可纠错25%的数据码字
O8 {! i+ [0 P1 u
9 l9 T/ y7 N* GH级:约可纠错30%的数据码字
, j) g( n; z: ] M+ X6 _: r1 N$ B+ ?: X
前提条件
# G$ p# Z! d9 o9 `4 @3 CGD库/ \2 _9 F0 R4 W* |
' v7 y/ ^8 d* ~2 z8 u1 X* K6 L& b) N& H
一、PHP生成QR CODE
* B, @( N( l7 v" f9 o0 U9 t# h官网:http://phpqrcode.sourceforge.net/
3 [4 D+ c2 ?+ V% S2 ~" U
, }% M# u2 S* ]0 w下载源码:https://github.com/endroid/qr-code7 d, B6 V8 C$ v/ g4 F' b
6 @/ e% H! m7 E; f+ s
目录结构
* t) Q1 M) `( x- ~7 T5 A
* ^2 i$ X' y' V1 D, M0 T- Z% h# o1 E; Q# g# g
1、qrcode_create.php# [' ?. l9 u9 S \( f- b8 ]8 I% ~6 X
ps:生成普通二维码
6 e3 b) w, V- x' N- M9 h- ( t' G5 D, x8 `( U8 x6 T
- include_once "./qrcode/phpqrcode.php";/**
; C; q) d) g' t6 m4 ~/ d/ z/ N - 2 c% E& {* L# w4 e; i3 c4 g
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
. X7 w6 Y% U) a
1 V/ r9 v' |- y: N9 D/ Y3 k2 q- * 在浏览器上直接生成一个二维码(内容为abc)/ J4 c) J$ j1 P! c/ M
- / ?# o/ O+ P5 O7 \7 c: J
- */QRcode::png("abc");8 ~# L9 B$ ~4 G& Y
- - Q2 v! i: Y% Y2 i
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**. g/ R) l3 a" ]
" u9 L9 i/ Y) U% H- * 生成文件到本地* i3 f* f6 V; j' p
- # p9 X. b$ w1 `& R5 i" ~8 y8 y
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)5 D5 e q( C8 u2 a2 n7 v$ Y, [
8 @/ j" s8 p' C- * PS:$saveandprint源码的p6参数做了修改2 j- A/ |$ y7 l2 I
- " e$ G9 _4 s, j+ B8 l) e
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);9 ?2 f& K: Y8 P% o: u6 n
- 9 S! T4 @$ E, ?: a" p
) a# k$ w) J( n- R5 L! M
复制代码 1 C' P3 R0 K) E6 v5 ~
2、qrcode_logo.php
/ | D* x; n6 |- Cps:生成带Logo的二维码- ) B$ S5 x* g A9 I2 M
- /**
6 R! O, ?8 ~" `' a `8 | - " k* ?5 ]0 Y5 d" |0 W& o [1 ^
- * Created by PhpStorm.
6 y/ ~9 \' v$ P# [, R9 i Y) M2 z - 1 Y: F, Z1 `. j8 I* P \& N
- * User: user+ O! k- l( X7 F. K" V
- " A4 Q( ~: P3 k4 S# p, V/ u
- * Date: 2018/8/16
0 n# k* `; a( ` - ! c* r$ ~! X, B/ X+ l
- * Time: 10:43/ p* E! O0 J1 X/ X }1 ^% S
- ' J8 C4 ]& F# o" U$ [
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";1 ^4 N4 v) O$ I M. ]2 n
- 2 ]. K; o2 p1 v, X8 o
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称1 i4 v# \& P; [! P4 F. ~
, ?7 p$ c1 F0 M3 x- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
/ b: H- K$ C+ Q/ n& t6 M5 e - & [+ ~3 S7 C# d( y! C
- $margin = 2;//边距
+ k1 F; d2 S5 a$ _
2 y! T3 Q2 Y1 L- t. a8 p& e- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
4 f/ f! o3 ]7 n8 g) I/ O/ V
" E) c* P' h2 n! M, b- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ 5 w' ]5 H+ H, L! ^' X
; R& e$ R# e% { J1 x- $QR = $picPathAndName; //已经生成的原始二维码图
2 T+ F9 B. n9 d* X( Z1 i - ) |/ Z5 A4 P- ~# @3 U
- $Logo = './pic/logo.png';
1 n+ U9 B8 j; i: I - ' d% C7 q& q( H* E. g( v
- $Logo_re = './pic/test_logo.png'; & s& W9 i8 g2 m+ a, ?; O
- % a; Q. E: T' b/ ~( x
- $QR = imagecreatefromstring(file_get_contents($QR)); 1 X5 L5 Y% Y$ W. ]) D$ Y `
- 6 s: X+ T9 T+ q# G
- $Logo = imagecreatefromstring(file_get_contents($Logo)); 0 ^: R' w& {3 M8 g% B3 v p
- 6 e6 V( O- o& [+ H8 y2 B+ J
- $QR_width = imagesx($QR); //二维码图片宽度3 t9 o4 x' a8 s/ O* X
7 [% x0 x7 t9 W8 I- $QR_height = imagesy($QR); //二维码图片高度0 h$ ]( L& r( _6 N: c, h; c2 q
- 0 s3 a" [. p% Z8 Y, Y
- $logo_width = imagesx($Logo); //logo图片宽度0 s M+ u' h! V( ~* o- f
- ' A: C6 S* P0 W _
- $logo_height = imagesy($Logo); //logo图片高度0 J# f. i+ f! o9 X, D
: k+ E" `" }( K0 p$ }4 W- $logo_qr_width = $QR_width / 5; ' G4 _/ Z5 @6 G0 ]2 Y! S
8 k# T' I9 ~+ {6 v* d- $scale = $logo_width / $logo_qr_width; . M! H9 v% U- G, _
7 u* t/ P. Z7 O9 Y! {$ }$ T- $logo_qr_height = $logo_height / $scale;
* ^( g1 a3 f4 @5 k
' j/ y) i$ L& E1 P7 t. h7 t- $from_width = ($QR_width - $logo_qr_width) / 2;4 V* U/ y: r" x) o
% H4 g4 L! d: g8 i1 c5 Z- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); 7 Q1 T q3 n& ^# ?" s% a
- 6 I7 G# T' n- a; @
- //输出图片
+ }% Z/ y5 k) h3 X
; _% q" E: i# V) q- imagepng($QR, $Logo_re);- {+ w6 `% R: a+ t
- 0 o; O6 N6 X) B: m# i
- }
9 \) F3 M% z5 H a& i
5 C" g# o, u5 R3 b- ) E! `8 G3 G8 q) @2 z `
复制代码 3、qrcode_vcard.php (生成电子签名)
/ G; D8 b1 v) w" W* N' ~: Q" }' G
$ T5 H, r+ D( E. s6 A5 j! ]vCard格式:https://zh.wikipedia.org/wiki/VCard
2 F- U) f# I3 O% e" p! V' m; @1 s' q. s& p
: q% k6 K4 k! }1 [5 M7 s1 S& P- * Created by PhpStorm.
' f4 _8 j6 I3 A v" u( h7 ^
y: L! y3 h" t# w1 m& m* [- * User: user
0 }0 T, g) I( m: K
# `' S1 e# z4 m: X- * Date: 2018/8/15
) X: n: H" B/ w) o' I2 f
5 Y: H6 M+ y7 B; I8 H- * Time: 23:007 G/ V& k1 R: t" e* L3 @
- . R4 `' ^4 \( J' ]9 [
- */require_once "./qrcode/phpqrcode.php";/**8 J* l# F! ?" k
- 3 ]( M6 m2 H4 Z! O! h1 y, N
- * 生成电子签名
% z5 z: c% Y$ r9 _9 e$ X( ]2 Q* e
5 C0 M/ R# H/ _# a- * PS;使用微信扫描二维码
% v8 r/ C; }) @- T% I9 `! J+ A$ ~
0 I8 L# h: \" D; y2 m& ?% r. u! H+ w0 `- */$content = 'BEGIN:VCARD' . "\n";//起始标志
: w2 y$ W: t: E* j - . S$ |0 i! K+ [: d
- $content .= 'VERSION:2.1' . "\n";//当前版本
" \/ e5 x t O2 Y3 C* e. F5 L
H I( W" r# m1 }+ }) D6 X- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名2 i8 A# v% N6 g! O( P( _ D
; ?; a3 T* ~' K; j- ]: c& _4 M) ~- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称' e1 T- M, [! v+ j: ]7 W1 S
( J3 y: f; t* Q' v( M( x- $content .= 'TITLE:PHP研发程序员' . "\n";//职位% `' g0 `, f1 k9 Q
) b0 x" {, Z8 n+ _/ @, k- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
' x- G0 T. T5 O" _" D1 ] - ; n! q( s" n4 O" S* C6 r& Y
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
L% _- R$ y8 E: D- }8 [% C! S - * q4 }, ]; _( W, X$ y; |: j+ R
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
- Q: b# R: [6 z& S0 Z - ; W8 ]& c- ?# l' k( b6 Z3 u) ?
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
* @% K$ A# U' R: W - + c! A: ?4 t6 Z: U* W: ] |
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
& ~2 O# D/ U$ _0 o4 }
6 x1 y1 p- I5 y& J- $content .= 'URL:www.baidu.com' . "\n";//个人主页
2 z4 a6 ?+ g. a# O - : N5 f7 l' h* R- A
- $content .= 'END:VCARD' . "\n";//结束标志
0 W' }8 P0 E" I2 m4 V6 k1 G - . i' d+ F' n! [1 p1 I' [
- QRcode::png($content);6 ^2 h. s# }6 }1 z: m8 [
2 d, I6 W, j% T) i, u& x! ]- k; ]) i2 y. Q8 [# h4 [% G
复制代码 4 |* g! H2 l6 w' c) k
相关文章推荐:. k8 ?3 \: ^% \4 v1 n9 i/ W( j
1.PHP生成微信二维码实例
' y1 U/ N7 V1 W d) {" [/ y L2.php网址转换生成二维码
, x. j$ A( w+ E4 F/ e E/ T相关视频推荐:9 F( D( C0 Y4 w
1.独孤九贱(4)_PHP视频教程 F3 O/ r+ L3 H- V. W
二、JQUERY生成QR CODE
' X* O/ v1 ^$ u$ f0 [' |0 W源码地址:https://github.com/jeromeetienne/jquery-qrcode
2 M. D% g5 T+ U5 _* }. a+ d% b+ P; b. y: |0 w
jquery_create.php7 E; ?* X+ I! \- ?. l% K* M6 j6 ~
8 V! {6 y; Z! |* c9 y% f- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
0 w; W8 K% j* v5 l% J三、PHP识别二维码
; \, v6 _: J6 q1、方法一
' ?. ^* {2 Y$ _# P环境需求,安装如下扩展
' o6 z9 M4 U8 [) H7 N! \7 U- ImageMagick
- s( h$ q- |3 Q0 v- zbar; v7 m8 s8 I3 `, {! F
- php-zbarcode% [+ A& K1 h/ ]* n# z3 Q4 [
; ] A2 y: I7 I" H' T2、方法二
, B+ G( p/ F9 Y9 q1 oPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以+ X1 {2 k8 N% M% t2 p' |
qrReader类:https://github.com/baagee/php_QrReader
8 f4 ~$ R4 M6 k
4 B8 W1 |" f b0 ?- [- c
& x' o: O6 a3 \' ?$ x8 s N- $qrcode = new QrReader('./test_logo.png'); //图片路径
+ I f$ A2 s" X - . ?1 b8 M# B% l( T% ]
- $text = $qrcode->text(); //返回识别后的文本! }: Y9 P N1 R5 E* s
- 2 m8 w+ N5 m& {! F/ P, D, j+ F' m* L
- echo $text;
% ~! I8 q8 ]2 o$ e
! e7 {- j6 U7 J; q. D- $ }" j# n0 i6 i" D8 O6 }' g
复制代码
S n- ~' U' g S y链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
3 f! i! f/ t/ _4 n/ U2 L
0 v7 q, \( B/ ?1 q! j. t
6 _! u, |; N. O7 \
. _6 p) t9 l( A
' v' Y. \) j* N1 k! k5 R$ w" V1 A1 X: | M r* L" Y' r- I
/ B) G+ K) o2 G+ `* q/ Z0 d! _
- T9 t* ]4 i) M0 |/ V$ J( S) Y: R% u. F5 p( c, U
. S6 N2 J" B8 ~7 U/ | |