管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
0 o8 |: K; Y1 [9 J+ A) `9 @---------------------------------------------------------------------------------------------------
4 I: k5 L: l h* g& y: O Y' e6 N# P二维码的分类4 { }/ N2 F$ ?
线性堆叠式二维码+ y8 |1 m, X0 e$ C- F
) d+ k! ^# E! f6 p- l矩阵式二维码( c- f2 t6 W; u% j( V! h- C( I
# N" d9 v* Q1 c6 {& p
二维码的优缺点
7 d8 N8 G+ m% M l优点
9 f T; y+ W2 W Y8 [ k信息容量大& d& [- E8 D, K
; C2 l) P$ }/ y1 u
编码范围广 H, d/ \* C' R4 g5 g! ~! Y
- a9 y& k7 P6 `) X1 v& L/ s+ i8 Y容错能力强# I+ L5 }0 E8 q2 U/ A
2 V( u. h' \! W2 I' @& B; r7 U译码可靠性高, R/ L3 l2 Z X- K5 X0 d
. c1 H8 u% E) c" v% |. ~可引入加密措施
3 [& o6 }5 b# t# n$ [ t3 ?
! I" w" {' H( p+ Q成本低,易制作) s, G$ B: u- S$ H
5 b* | I. N U& \2 e3 l/ P. {* Q缺点 ^1 o# t* |2 i$ Y9 G% D& B- W
二维码技术成为手机病毒、钓鱼网站传播的新渠道- O. T; P+ k$ C1 w b
2 z3 J5 @- R! z4 ~5 N6 y信息泄密1 ~7 m/ q8 A0 A9 U$ t% }( M. I/ r6 W
: O8 b+ d6 r( Z" l, k0 b目前流行的三大国际标准
1 Z( w3 D, A L( M2 E0 nPDF417:不支持中文0 e x2 E ]9 V- j) S
3 g* Q6 v5 g7 n0 E. `
DM:专利未公开,需支付专利费用( N2 j0 F( o1 u1 J9 \
, ?; f8 q% y4 D Z
QR CODE:专利公开,支持中文
+ r0 D y5 g% f% o* h: D
' r" y* A1 {: j2 W$ VQR CODE 纠错能力
+ C8 A% L4 a2 f+ t( LL级:约可纠错7%的数据码字
2 ^$ x5 \) J! n" I8 S5 P) k* r" B( ]' h" V/ [6 Y9 M, r" d: s
M级:约可纠错15%的数据码字
% U# q9 ~& E8 f. |% {* d
2 D3 p& u2 C9 D1 W- sQ级:约可纠错25%的数据码字
( L" ^6 X/ c3 P t. v4 U5 D
/ A+ k7 A# o& {H级:约可纠错30%的数据码字" z0 S, ^, m2 c) h2 @
/ [( k# G: R i+ W前提条件
5 p; T- P) a# n- C0 K! \, G2 M/ lGD库
: t) X- r: I- a: `, J) J- a* _8 f4 F& r, | I
一、PHP生成QR CODE
8 T/ j9 m2 A7 \/ p官网:http://phpqrcode.sourceforge.net/
% w9 h9 [, A5 I. B; f
( n, x7 s- G6 O: G5 w3 ~; w1 z( | B T下载源码:https://github.com/endroid/qr-code
/ m u5 M3 U" ^, q4 N- D& ]
: G1 I- i3 V: r4 U+ r# ~目录结构' u6 b$ F2 y, C) E# H5 d
" r+ ?/ M5 r2 S% p; N
/ y H+ ~) g5 k* @' {( b1、qrcode_create.php; t( O4 a* W. a" l
ps:生成普通二维码
( }( q& b; r! h+ v/ z
2 @+ ~: m1 S1 K1 w4 R, T- include_once "./qrcode/phpqrcode.php";/**7 T j$ F* T, ?
- & S" O+ R/ {: S, A; O
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径! ^3 y3 L# {, H3 W3 c
- 0 N9 y" u3 ]9 e! p; t
- * 在浏览器上直接生成一个二维码(内容为abc)
+ ?$ I$ D [8 i
; Q- N* F* n& D: F! H- */QRcode::png("abc");# z# e2 A* }1 N% e2 F; F
- B% z1 l1 O5 s0 r) ]2 J- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**: r3 ]5 ?! w# k( Y
- n8 M9 d" h, R, d- J& Y- * 生成文件到本地, q, m+ s' e! K! C5 D& E
& o. ]$ ]" }; Z' j' N$ i- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
& w; O7 x: i8 `% X) K9 ^
! Q( h* S+ o3 _0 l) e, N* T- * PS:$saveandprint源码的p6参数做了修改
; | g9 [. }( q/ c1 h3 C1 O - 6 Z, f4 f, H- `5 C$ s
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);. |3 S% o! {, |+ w
- & v7 l( }# q- X# r! O: {
- - N6 b% S0 p9 Q: |
复制代码
5 `5 v+ x# _' ]# U2、qrcode_logo.php
6 E6 F* `- {9 q; i' X1 f# p8 S4 r+ Xps:生成带Logo的二维码- ' @ t. n3 @! J; X
- /**0 O. h' z: X, V$ \( `) j
& a" N, ^0 Z: Q( N2 t* b9 C$ @( @' Y- * Created by PhpStorm.1 ~+ P6 X1 b7 G) k, }
- , u- M- N2 z; }" s7 ^2 ]
- * User: user
" ]: o. w7 Y( U* c# \/ B% @
; l7 w8 y4 f6 ]; B- H- * Date: 2018/8/168 U: b1 ?5 j/ h0 o1 v! _
. g! b+ L3 v+ L2 e- * Time: 10:43' B( N2 v8 F+ u
- 1 }5 E& I8 k6 g! ~8 @2 K9 y) I1 k' ~( L
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";
# N: c0 |# i+ p7 n9 f2 u - ; a! f5 ~' _; p! `& l- z
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称7 S- K- R/ |* @
7 h) e' b5 s& [$ }- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
( u3 i+ w c# U9 M1 { K5 s
2 M Z/ g3 B( r5 P4 v3 [! [- $margin = 2;//边距
5 Q R7 A! y1 c5 N - 4 F0 V4 {- H& r u% }
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片/ m6 U) U3 @. D$ a2 H
+ P4 @2 J" Z$ T- X4 z- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
% j+ X4 u0 {9 B
; n3 {% e1 I% k% |0 M s8 l0 `- $QR = $picPathAndName; //已经生成的原始二维码图: G; Y3 V8 k/ i
- 8 N; }- X. j0 M7 v
- $Logo = './pic/logo.png';
/ M% o( v: o/ X7 \4 ?& u - I8 {# g: T# `+ E! ?; @
- $Logo_re = './pic/test_logo.png';
6 R6 c" C0 g1 ?! W# y
+ L6 i9 `. ~3 z- m! f6 I- $QR = imagecreatefromstring(file_get_contents($QR)); 0 j' X8 h6 W2 f0 x
- ! d6 s/ u0 t( H7 j4 }
- $Logo = imagecreatefromstring(file_get_contents($Logo)); 0 P5 g# F/ J/ f% p, W
- ! v4 ~ C2 @9 ]$ H; L: g8 H+ y8 y4 f. C
- $QR_width = imagesx($QR); //二维码图片宽度
* Q- D8 ]6 ?2 Q N( R( W- [
. \5 t6 y$ z$ B! z' f5 ?- $QR_height = imagesy($QR); //二维码图片高度
) \ @+ b5 t9 q7 @. ] - 6 D& [+ `" u: ^) R* ?7 M
- $logo_width = imagesx($Logo); //logo图片宽度. ~9 a, A6 l% C, ?" Z1 q
" h* F1 q+ S% L; G; M# S, w1 K- $logo_height = imagesy($Logo); //logo图片高度
! b, G" L* O4 I" }& y - 6 |2 f# X8 D. ]! P( q) v. N
- $logo_qr_width = $QR_width / 5;
: H6 c4 [$ K3 r) ]' G( u l& F. m - " [ Y+ s, j, W5 z
- $scale = $logo_width / $logo_qr_width;
1 ]2 m2 ^/ X7 v - 5 J7 U' @8 n6 t* A& H: Z2 A& X" b$ w" P
- $logo_qr_height = $logo_height / $scale;
& k! z) m' }1 a/ P. M) B
; c) f2 k! r# P$ I- $from_width = ($QR_width - $logo_qr_width) / 2;
! `- t1 V- J; B v9 J' l1 I% g - & v3 O% o) o( Y! B; X8 S
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
$ D m' y/ X$ @# ^ - 1 T5 `0 L5 z4 b$ v/ [. C4 H
- //输出图片
" `- ]3 I0 Z/ a/ I+ Z" T
; F/ G% E0 p1 X: n4 j* m" c- imagepng($QR, $Logo_re);: C# V( p# o6 |) m5 i" Y" N
- ( t* W- {" g7 y6 T5 h# r9 G& B3 H
- }3 U' u5 S* S, `$ E7 a# r. i
3 x9 ~3 c+ ]4 Q: h
8 E0 c6 S# v, M4 j" _5 g. z
复制代码 3、qrcode_vcard.php (生成电子签名)
. a* S/ N, ~; `2 }8 |0 V5 ~! U% t
) @! Z* W5 G# Y" k1 ]vCard格式:https://zh.wikipedia.org/wiki/VCard
3 m+ j2 ^! C; E" A) J# R/ ?4 _4 H" t2 b( W1 h( I
- , r+ \" d, C1 W* Y
- * Created by PhpStorm.
/ |3 N# R, P( m' h) Q
, h: l& f% h9 m" D5 X- * User: user
. o6 _; m, ~# a! i& | - 4 ?6 g0 B7 k% q# X$ |; k+ |
- * Date: 2018/8/15
+ k" M o% ?# i7 X9 G: U9 y
* V. y+ W+ p) Q c# d- * Time: 23:00
* [: e$ g; n5 s+ _8 \- L
! Z1 A4 N& r. \" Q# y4 U6 L+ d- */require_once "./qrcode/phpqrcode.php";/**
% I( E7 F1 c5 B) w - 5 A+ ]4 T5 [2 T6 n5 p% Q7 _/ Z
- * 生成电子签名
4 ~$ W" u* v1 x2 }9 [ - 5 L2 ]" n: t4 A
- * PS;使用微信扫描二维码3 F( j& U" z: n' C
: E! U1 o2 k% `- */$content = 'BEGIN:VCARD' . "\n";//起始标志
, n+ _6 T) [$ w, S5 n) a% E) z$ ^8 M' z
2 S7 n6 O8 |* v K) [- $content .= 'VERSION:2.1' . "\n";//当前版本1 D0 L- J* T8 G4 l
1 q* D' s8 V$ E9 Q' {. b' w! E- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名) }: @4 A7 c' u/ v4 t# U
- ( C6 @# g t; j
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称5 Y8 B. w3 D& S/ ~$ Y* ^2 d' [
( ]2 \) A0 }, F! y4 y$ C- $content .= 'TITLE:PHP研发程序员' . "\n";//职位: l) l. K" M# p& r
' c7 N3 \" M% C# v# a( Y' c+ J1 i9 s- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
' T& J5 Y. r, c
. j1 _1 f& Y9 v& g) G& N- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址5 M( t/ A' _1 x3 I+ [ A
- ( K+ j# L0 t4 G7 j
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)( Y: B# J8 S7 x/ d, W% Q9 N
( X4 r8 E3 e& H6 S4 {' o- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
9 C/ a2 S8 R6 i9 I$ l4 A, r& z" i/ ~ - 3 [& b6 s& o9 J* u+ N& {7 `1 q
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
) x$ n" a" J) N$ X2 ^ - 5 u6 v- |7 r5 e/ Z
- $content .= 'URL:www.baidu.com' . "\n";//个人主页* E( b, d/ J) O/ k% C
- 6 C( \: B) O% L# n D
- $content .= 'END:VCARD' . "\n";//结束标志$ Y( w2 n$ l9 m. x; p
- 1 ~) i; S' d/ O8 Z
- QRcode::png($content);
& t' ?: a/ `# X - % N6 Z- t5 j9 S- i
9 M7 o1 X" R; Q! r# I' Y
复制代码
! n9 `9 b. ?+ ^+ F相关文章推荐: [+ T, d1 ~) P( q/ y
1.PHP生成微信二维码实例" _' g# g9 R* F- G" R
2.php网址转换生成二维码. n* v q# G" W7 ^, R. ~( e
相关视频推荐:- K; y0 N- E7 i
1.独孤九贱(4)_PHP视频教程
1 T5 ^ z- x# _- X: R+ l* S二、JQUERY生成QR CODE! t/ M6 X, z9 f9 u6 C, k
源码地址:https://github.com/jeromeetienne/jquery-qrcode
% a& y+ D: k% R ~) k1 L h; i& [& }6 o8 M9 A
jquery_create.php" _# W6 q. d. s/ e1 n! G6 l
0 K7 ?1 U: P. _
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
/ D5 X9 |! V0 ^ o, Y- X三、PHP识别二维码
* G q& L% f; W! I3 C1、方法一' @% X- `! U1 J% ~
环境需求,安装如下扩展
7 J4 C+ X/ U4 h% Q' e( z- ImageMagick0 Y5 u6 C' M8 }7 U1 C/ J! X
- zbar
9 N- j4 w, h3 ]( p0 U- php-zbarcode: n* w) D+ G2 I+ J4 l
. H3 g8 v5 ~8 C. C: C5 A9 x5 Q2、方法二2 u% p+ k% r. w3 C
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
6 p8 G% ` ^) ~6 z; y4 x' D/ |( Q5 dqrReader类:https://github.com/baagee/php_QrReader2 A3 h+ s2 W- ?5 R
/ ?9 P5 s+ h, K4 K" V- : }' G3 c! E; y) J8 ^; b
- $qrcode = new QrReader('./test_logo.png'); //图片路径
! X6 z1 u3 f, ]% ^- k/ _ - * U' p0 [8 w1 A- I2 S. S# }+ c+ l
- $text = $qrcode->text(); //返回识别后的文本
9 d6 x! i/ W; w7 ~
& ~, @' @9 ~0 H4 |: x+ k- echo $text;
% T- A/ C% _- ^, S% G3 R# L8 \) v
; A3 E; G4 v k |/ Y. J4 n
, E$ n" g1 H8 ~: r3 q* H
复制代码 $ j" Y) ^6 E1 n0 I' P
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7. `# Q/ x# ?9 [6 Y& U. F( ?
' x+ U9 N- e! ~ k* Y; _: _- e) E0 V+ A; m
* t4 R3 m8 }5 ]8 Z" I
( ~; o8 A3 B- ?/ c) W/ w; _% V+ R+ s: F" t) b
) O' }# y' t& [; |# }
) K9 E4 f$ z- R8 `
5 z" a w" l/ w0 e, m1 I
" c; P; v( b5 A) v+ c9 M: R+ Y |
|