管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
4 ^2 I$ J3 V! t, k* e; u1 j---------------------------------------------------------------------------------------------------
! K" r& n$ e7 Q; Y" u- O二维码的分类
0 `, @/ Q. g2 x+ X" G线性堆叠式二维码4 w3 p5 c$ A0 l
# B3 O! u4 b4 z: T/ \矩阵式二维码' [$ t0 p, {; e
8 g* x8 M/ a- x _2 S
二维码的优缺点8 J& O4 p2 P% q5 e
优点
; _ Y, ~# I2 U" H9 ]2 q/ e0 B2 k信息容量大
2 F5 n- y' e5 m7 Q! I1 M# D& R Q: `/ j- V$ W9 C- M
编码范围广, E1 Z' ^$ m" K
6 J1 o% x: [0 ?. ]
容错能力强! |" i. _2 l1 L, f/ p, w4 e
9 O# `& i N3 |- E8 W# ]0 k' i) r
译码可靠性高1 w" v% H- ]5 F( f% L
+ j- W" ?+ g" K
可引入加密措施
k- X, ^" W3 F' Q' k8 t& k6 y0 \: }, ~
成本低,易制作
8 i, f, |) s, r& H0 }# ?; W, W7 x5 s6 V$ S
缺点8 k& g5 a7 h7 a+ T
二维码技术成为手机病毒、钓鱼网站传播的新渠道
* U: g" ]' }: x: P
7 e6 |' V4 z' J+ {; c信息泄密7 X, x1 [( [9 k) s! i
2 q6 |0 G6 d! B, W: c目前流行的三大国际标准& J) I: a. o0 p$ i, f5 r
PDF417:不支持中文' Q" S+ a, _9 @2 s5 R' u) Z6 p" B
7 n' f. l% T5 B( t( |- G' Q! b: eDM:专利未公开,需支付专利费用
n/ T4 y! Q8 ^1 G m2 e* J- M2 {1 N
QR CODE:专利公开,支持中文% J" F) l e' i: I0 h+ a
- \! U" z& @5 ~9 W
QR CODE 纠错能力
2 B! B9 F5 N' h8 r) }& N( @6 FL级:约可纠错7%的数据码字' N6 `! _) z* @6 y
+ }. e3 a7 {# d, I1 V% A' j$ h
M级:约可纠错15%的数据码字- D; f) H; V# D# U' x3 P
# p. i8 A6 d- _9 ^1 q* a' D
Q级:约可纠错25%的数据码字
' y; J6 {/ h6 U' ^! z% e" y+ f1 U- m( h$ T
H级:约可纠错30%的数据码字
$ b! R4 n# A1 C: ~8 u3 Q% W D6 M& j& ~# X3 ~
前提条件, p* y! |; n4 D+ D& @4 x
GD库
\( W, u6 P; N& W( @$ y' M
, N( n1 J6 a6 e3 v1 r一、PHP生成QR CODE2 x; k8 l ~3 f) c
官网:http://phpqrcode.sourceforge.net/8 k \. \5 _3 L/ U/ U0 q
H- H( e: r" N; P4 v" W
下载源码:https://github.com/endroid/qr-code
% ?6 U0 f. \/ V9 k; F
2 d, |( R2 I# E; O( ?3 |1 q目录结构 W8 }4 A: f/ S! M0 s
) L% s* h! d& d8 C0 O' v( m2 {: u$ c: ]0 v- C( g5 ~- {5 s
1、qrcode_create.php
5 ~ _+ F# s/ f0 c6 Cps:生成普通二维码
" O4 b' {( D+ C6 S' v
! M, f& b9 D, Q& H- include_once "./qrcode/phpqrcode.php";/**
$ N S. a! C$ X( S) S9 ?! J - - i! v6 l* @+ `) T! Z
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
2 s. U0 b) R# l& i
7 Z/ ?) \9 Y6 h! z; _- * 在浏览器上直接生成一个二维码(内容为abc)
! I0 u1 Q1 {" W9 k+ O/ L5 a - # B% k8 j" {- @0 n5 o
- */QRcode::png("abc");
, D) E5 w, D( Z6 u - ) g( Y" c% _) w i8 S
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
5 z0 o8 [, n6 h7 b: K% f - ' d/ c) M" Z) C8 ?7 r
- * 生成文件到本地
/ V O7 a; t& W0 F - ) C1 X) U# F3 `: l: ~ ]+ ^) r! e
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印): U% {7 k: N- P9 A
- + l. u: {$ b! u6 y* U7 d% Q X V
- * PS:$saveandprint源码的p6参数做了修改
/ N6 k* E: M4 K" M" l8 E* o
! n6 ?1 K5 `2 A1 J- P& A6 U) D% ~- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);6 w9 Z1 c9 _0 n
- + v7 n3 k/ z9 Z% w
- 6 Y1 y+ u$ U& A
复制代码 2 \- |9 C& _& t) T& J2 Z, B
2、qrcode_logo.php
8 h" ?0 S5 g- g- W0 ops:生成带Logo的二维码
2 h6 V( W/ R Z- _" s) O" l- /**, P/ C8 T5 K7 g/ z \# O b F! }
- % v/ T1 [) n) B/ x, \! }' W
- * Created by PhpStorm.
$ H. |: W% v7 u
7 G* J# e" P u3 w7 h" K- * User: user2 f5 K# Q: N0 W5 ]7 W# y# n! \
$ G3 D. |+ g" g. T0 }9 y- * Date: 2018/8/16
% i j4 n% x( |- `. P, C; w/ ` - ; q' L4 s1 ^9 e3 d, a
- * Time: 10:43# P1 W3 O* i- ~" C8 y" Z3 x6 `4 i- t
" m j, l. l$ h5 p. ~. I- */include "./qrcode/phpqrcode.php";$txt = "测试内容";6 C7 l$ d3 X3 v: t% i
- " d4 G r0 i- m8 Q- w
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
/ e8 h% ?2 V0 Y% R - n! h2 a: u* o
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
3 P" H- b) v9 j5 O - ) x/ `* q9 x( V3 S8 c: N# `' s
- $margin = 2;//边距
3 t- K/ |, j- R) H9 A - 1 Z4 s4 Q; w1 K% g0 l5 z" g. o( o7 s
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
% n5 H* `! o8 Q- x7 @+ y - 3 X2 S" _5 N% W0 W7 b( g+ V; Z, x& U
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
+ z P; b4 j. @5 R - 4 A, N9 Q) w3 R/ H v* n# m6 \
- $QR = $picPathAndName; //已经生成的原始二维码图
# ]0 z, s2 r3 N$ H7 x- D
! s, O/ d& n! \- $Logo = './pic/logo.png';
% L# W d! |" n7 F - & e5 i; N# _1 w! H# ]0 W
- $Logo_re = './pic/test_logo.png';
T1 g5 L& D% t0 B+ v - + n; V5 d2 h2 f( p8 g% L0 d5 b
- $QR = imagecreatefromstring(file_get_contents($QR));
1 X% t, g) J2 c3 }( M6 s7 V - 2 e2 K3 y" _6 v! V/ c- i) b) v a
- $Logo = imagecreatefromstring(file_get_contents($Logo));
% R' F8 J, M1 P, g
2 o: U: J @2 Z n7 J- $QR_width = imagesx($QR); //二维码图片宽度
X4 a2 k6 O/ F* U* L
% @$ e1 q/ u! j# l! G: U- $QR_height = imagesy($QR); //二维码图片高度1 C, Y$ z3 k0 v8 M9 k
7 ?6 H* i( v5 d& x/ l8 x" g# J- [- $logo_width = imagesx($Logo); //logo图片宽度
2 w$ P5 n# O( t& n @% M9 p
. B# k. K# G# C- $logo_height = imagesy($Logo); //logo图片高度 a3 V5 H, O8 ]. r
- ) j F* x o% c8 t6 T/ p
- $logo_qr_width = $QR_width / 5;
$ d% K' b0 s( W4 E& ~) R
" K" E, T3 @- }2 r- e, L( j- $scale = $logo_width / $logo_qr_width; . P% {8 U V- J n
|" ~$ `/ H( d: @$ z. @- e- $logo_qr_height = $logo_height / $scale; 5 L& B, M; L% ~4 d4 N0 g, B1 K
6 d- Y4 f. u$ Q1 y/ k( [6 o- r! F- y- $from_width = ($QR_width - $logo_qr_width) / 2;6 l9 v5 o$ ]8 m( B' N1 N
- * s& p ~) k* K2 K
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); 5 G) a; I x9 `9 @
; l3 u" @6 n( P) Q [& l# t- //输出图片
% W3 W: ?9 t& G" D6 _% ? - / H! h( G2 ?3 K8 k F. Q3 d; m! U: d
- imagepng($QR, $Logo_re);
- N, a/ h5 o. d7 L! g/ { - ' Y. p+ K5 t& V* w. @
- }1 ~# x# T2 ]+ F$ W/ x
- " R Y( f" P$ ?
* {: |1 {' P& c" k {0 P8 J
复制代码 3、qrcode_vcard.php (生成电子签名): W/ s A4 S S; C, }
* x- \$ W$ i2 |# t$ O; r2 SvCard格式:https://zh.wikipedia.org/wiki/VCard
. ^2 b! G! ]) w. J4 x2 |
' [; C, R; \4 @# _9 J+ f
* @( t" V3 i' g' P N- * Created by PhpStorm.
1 q: Z% w5 S# |9 O+ o
! g/ Z" X2 h" _ N4 w- * User: user
( k- I3 e; ^2 g5 M& E - % H* X0 L9 r3 N* S0 K0 y& f' e
- * Date: 2018/8/15
3 o2 ?4 N: Y, H. U. H0 n - ! `/ f/ A4 E- U( G
- * Time: 23:00/ n) o2 y/ R1 j+ O4 w
# U) L% c6 \0 E7 a- */require_once "./qrcode/phpqrcode.php";/**1 }. h' V& a8 |" u1 ^3 R5 h
& {' Y; c1 J3 V7 ?) n- * 生成电子签名/ c! e7 U0 s$ X5 @! s$ L
* Q" P- ^2 d$ W! O C3 |+ w/ m- * PS;使用微信扫描二维码
9 s i' A* h s
, L# g5 D7 U0 o) h) f; Q5 N1 Z- */$content = 'BEGIN:VCARD' . "\n";//起始标志2 g) F! W7 M: N" L. s
- 0 q8 `( c/ W% T3 h" m" Y
- $content .= 'VERSION:2.1' . "\n";//当前版本4 O- P' M9 ^& {" F. M' o
& W/ M+ E- N4 `1 e/ ?& l! }& E( F- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名6 ^/ q" Y; i; q# m1 F" n$ {
- ' L# I& z' I* D/ g, ~, W% c
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
! w+ C9 B( d" W: l - 0 u; K( L$ B2 S1 q& T$ x
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位2 L9 U6 `9 j3 k4 P/ A
( `% m$ I4 _. m8 Z! J) `" p- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话6 J& h; \( Y0 X) E
* q7 D Q8 w& @6 A! A- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址+ Q- Q* ^; }/ Y5 R
9 X( L$ H* A4 {7 L5 _ Q3 A$ `- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
- g2 \+ g2 Z8 }) c/ U! l& D
0 M! ?- Z- n% S. x- J- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话1 n' |3 T* \: }; o" m
- ( ], d4 b7 P+ I* M* t
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱3 u7 a7 G5 y8 g; J+ `. w9 B. J
- ) g- J& C, D2 m" k) V
- $content .= 'URL:www.baidu.com' . "\n";//个人主页$ n4 s: j* Y G+ m- [
- 4 }; b$ ~. s3 {! t$ u5 L
- $content .= 'END:VCARD' . "\n";//结束标志) q9 E+ d2 V! X6 F. o# z; Z; s/ b
) @6 c: Q* F. V& T4 K0 Y P- QRcode::png($content);
- {0 U$ ]; n! L9 K/ T" {* S9 Y A! b - ' j( T+ f7 _. k* `
- 9 V" \* I) ~4 S* X0 a
复制代码 " d$ D4 u* i7 B1 n7 H
相关文章推荐:
, W2 N9 O, h5 p0 H9 V1.PHP生成微信二维码实例
* U+ A: G- m% S+ Z7 V; ^1 ^4 O2.php网址转换生成二维码+ M; u/ R6 [9 v4 k$ w) j
相关视频推荐:) T% X/ A1 l: k
1.独孤九贱(4)_PHP视频教程
& y `1 ?3 G; O- Z @二、JQUERY生成QR CODE& g$ {9 e* ?8 V* g+ G3 f
源码地址:https://github.com/jeromeetienne/jquery-qrcode
6 b$ ^4 @. r- I* j' M4 I2 o6 [' @% p5 D5 N( q
jquery_create.php
+ l9 k1 r; h; |# A$ B7 c. G8 l; T, Z Z6 B* C- s: [+ @+ G
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
) x& J: q" L( m& a& }' C三、PHP识别二维码
) X- x e8 J* ~+ ? o1、方法一
( @, E+ Y% M* e环境需求,安装如下扩展
1 \& W5 T% r1 I4 h, |( v- ImageMagick
2 t( q; H$ F c4 s. y7 f+ Q- zbar
2 b4 K) V2 K( D- php-zbarcode* V1 r7 A1 M8 e
9 I: U3 J3 u2 f) c9 ]! Q& V4 p5 I
2、方法二
. E! J7 r4 u+ O' H! \8 EPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
) [4 o+ n2 `* D2 n% YqrReader类:https://github.com/baagee/php_QrReader }* ]7 e, f$ s& \
- F8 z( w: H2 L- j- 5 T6 J. O/ V- M% }1 K9 I
- $qrcode = new QrReader('./test_logo.png'); //图片路径
) R, I3 t4 ?7 p5 y - $ [* G; z# F5 l2 s+ t. [
- $text = $qrcode->text(); //返回识别后的文本) k- |# C/ T- g( \: |" H" S2 X
- * u6 J7 k* H! o% Q; y
- echo $text;( @ D4 `. l3 ^0 O
. `( A9 o: N4 {- & h- \! Q) X9 D! {
复制代码 + e0 T3 Q% P7 Q, V }3 l) a
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
$ `" X7 m. N( `% u% d, Y; q/ g9 D
4 D) x) |; c$ Q: v* z, p; n
; L* ~" n* t' ~2 M. l
7 \8 K, I( X8 ]' b7 g$ z( S9 A" w2 @4 r$ q3 P" [! C7 s
* z, W5 _+ I. | F+ a6 B* e% J
) a! Z6 G! Q$ z5 }' w. J' e2 ]
& T2 j- @- h, ^5 I. i. f! C% g) d3 g n# c8 X5 H
|
|