管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
5 ^- @- F* C8 D---------------------------------------------------------------------------------------------------1 h0 V4 l5 Z2 O
二维码的分类$ k2 Y1 w1 I6 J
线性堆叠式二维码3 k" K+ m9 g2 I9 }* A* g1 G
5 y4 I4 e- O0 ^- V M+ K5 w
矩阵式二维码
$ ?0 D: J2 u# F4 H9 E: z, q) n4 ?$ h; g9 P. \9 c0 D& R% Q
二维码的优缺点1 g# e) H- P5 _* L; N$ C
优点
# }# m, R2 D0 h7 c信息容量大& j( O1 C( e% O$ o6 C9 j
1 C: ]# Z( b# X1 F编码范围广
% D2 P' i4 V; k& J; h1 p* m- O% L2 k! k- n
容错能力强4 V+ @: l% e% G! i2 k+ W7 w5 V
- D& O3 Z- S) E7 o; g
译码可靠性高1 T) ~ X) z" G5 |: o6 S; P
1 `) [. B# H" v4 U% F1 a( V% i
可引入加密措施& |9 i3 u, L6 v
4 W2 c6 C6 v E: `; Q成本低,易制作; ^ ~1 g" q5 Z) y# S
5 V1 K+ o& \7 T; _, V缺点
' K# o. f9 t: [: g6 i6 N, C二维码技术成为手机病毒、钓鱼网站传播的新渠道 B5 E; g& N* F( |. D' ?$ O
2 r! t# C0 a! z! K8 h8 c信息泄密) o$ S1 W) I* o
) J) y/ M/ z( k2 \- q7 y' D目前流行的三大国际标准0 h" l3 b3 i* [' r# A! M1 U
PDF417:不支持中文
' j& l1 m+ g+ y4 {5 ?: L
3 L$ G5 e8 |$ J1 g( M3 x, w8 I6 yDM:专利未公开,需支付专利费用
7 I: Q% a5 F: a0 d- r# F5 \% G1 Q+ m& T4 M8 v! w
QR CODE:专利公开,支持中文
) |2 M7 T. w+ }2 w1 W3 C
% B4 `/ ]' J' eQR CODE 纠错能力& s; ~( b1 i- D; X
L级:约可纠错7%的数据码字/ U; f* ]1 |! k6 `+ k8 ` D; L$ L
4 Y8 B, u$ ]1 H! c6 x% @
M级:约可纠错15%的数据码字
1 h2 q* ?! w$ o+ C: I
8 A6 i5 A! L$ L, Y6 M8 |Q级:约可纠错25%的数据码字6 l; c6 ?7 |) O6 F, m$ J" e. a
8 k3 j5 x6 a4 h. S j/ W3 P
H级:约可纠错30%的数据码字7 O: u9 ]. E% D% u0 j% ?( t
n( f* k0 q9 q2 c0 g+ x
前提条件
4 k: C, I( k2 V9 ]# PGD库
2 S6 ]3 N" ~# K7 s( c* J7 @3 B9 G3 T1 Z5 T. i+ s S, B
一、PHP生成QR CODE
4 k/ x4 v" a" P5 o+ N# \官网:http://phpqrcode.sourceforge.net/
6 I& J* C0 m9 y9 K! @# d' d
; ^/ e2 r1 D) b! ^下载源码:https://github.com/endroid/qr-code
4 w7 g. m t ~4 u/ v5 m$ R r1 |3 k
目录结构, v; a8 V; Z f# X9 S6 _5 u
# Q3 n) j: q1 {9 V* ]+ ^$ s
x( [' Y1 v* k1、qrcode_create.php
( [+ ^/ J' \3 ?. X" ^9 Hps:生成普通二维码* w: {, }( `: P' k
- , z! w5 h$ a% u7 K' ~( W
- include_once "./qrcode/phpqrcode.php";/**3 ^" {, g, ^0 o# I. U; E( b& w* Y* G$ \
- " L8 {% w! E1 P) e, Q; H ]( |
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
, |% D9 b: `, x - + m( p7 T! z; C7 h! i. G+ g
- * 在浏览器上直接生成一个二维码(内容为abc)2 Q: {+ R8 o# r( \
- ) b0 W' T) U$ F: ]
- */QRcode::png("abc"); y( @# z. Z ?
$ U" S2 K. ]8 I, t. F- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**6 x. u. t" [4 p
- 8 W. T- I2 V; B0 a7 Q
- * 生成文件到本地; Y5 Z3 g. y; [! `, k5 t
0 M7 P: ~* ~; m# Q- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
$ c% E0 `7 V N( _3 B6 L - 7 ~: ]# m$ v1 s6 A2 L/ ]
- * PS:$saveandprint源码的p6参数做了修改* ^: Q8 l% X: E( k' \
9 m7 k& B7 I7 X, I7 Q! x- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
0 C0 N" |8 S9 O: N
0 y9 E7 o5 q9 ?8 p# c- , ~ j3 [( B/ N9 D, Z
复制代码
1 s n; l R6 U/ o2、qrcode_logo.php
" b- Y* T, Z" sps:生成带Logo的二维码- . R7 |3 w/ i: V' p0 A1 y O
- /**
" m' h% e; S% A# {- `8 L f6 _5 W6 f
+ y, |3 ^7 C5 ?6 U; s9 ], z9 a7 H- * Created by PhpStorm.' z* S/ s; b& N- {+ A" O& J* u
. g+ L& d% \& r; e# D+ r- * User: user1 ]5 u. r/ {8 `9 m( d
; g2 \7 B& W- b+ A# L0 X: s3 f- * Date: 2018/8/16
! a) h6 O$ u5 ^! A: A" G5 R5 u - 8 Q0 t& t5 M1 m1 G3 C4 f
- * Time: 10:43
5 \" E: F- m @4 u. Y
, O& c8 Y: h0 f- */include "./qrcode/phpqrcode.php";$txt = "测试内容";
" b+ u# R6 M8 f* s - D. D% u1 b$ h
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称! F, T# Z" p4 R; b+ W- B K
- R+ G& _# t# _2 |- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
8 g5 n: i8 k) u1 s# k0 P
1 ]( L0 L0 v% j/ Q- $margin = 2;//边距7 K/ c* E5 f0 B
- + U8 F4 k2 {* x! E1 H! D. X# Q* Q4 J9 O! o3 l
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
; k( Z3 z$ C& I+ ~
9 ^: x' g6 r1 t4 y7 h; B- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
2 ? X, x. K* K s - 5 D1 v/ _0 ~- d& j
- $QR = $picPathAndName; //已经生成的原始二维码图
& ]6 G& e; V p n- A( V) C
7 S1 V; K* |) c- V3 P- C/ c- $Logo = './pic/logo.png'; 4 S" m1 X: E! k7 l
1 F# X" `* y" u- $Logo_re = './pic/test_logo.png';
: K1 U, ^2 M: z$ `
& d; U: p [$ B. e. ]& g8 c- $QR = imagecreatefromstring(file_get_contents($QR));
`- k+ H% o2 N8 s" ~5 I+ r5 I8 A, { - , G% ] y$ H; e& I
- $Logo = imagecreatefromstring(file_get_contents($Logo));
- w' O' ?% e8 b" @, F* V
* |( S# R% }' U% k% K. o- $QR_width = imagesx($QR); //二维码图片宽度% N7 P* R5 [7 d9 P7 A- Y: r
- 5 ~# F: `7 ^ H1 S3 K: v" m
- $QR_height = imagesy($QR); //二维码图片高度' e2 t& u, F2 U: u0 g
- $ k* L: O9 \/ V0 ~. U# w% q) z
- $logo_width = imagesx($Logo); //logo图片宽度% {7 Q) h% R+ k; n+ r* q& {
- ' D2 ^0 h3 w5 T
- $logo_height = imagesy($Logo); //logo图片高度
, u$ W- [! J. X/ B, g/ ]5 @7 @$ \ - ; j. t( c" B* Q+ ]
- $logo_qr_width = $QR_width / 5;
% W1 L5 o1 A' ~# R
2 e9 b$ k/ F( f" i0 r- $scale = $logo_width / $logo_qr_width;
3 H& N) j' d. v5 i* C1 B' S - 3 s2 m! s/ Q; U7 N
- $logo_qr_height = $logo_height / $scale; 5 M8 q3 T/ S9 n' w
- . r7 b# w4 p, R* r6 t
- $from_width = ($QR_width - $logo_qr_width) / 2;
& K, R* d$ _1 `' @
; Q" d" B' {8 v1 |; R! X- X- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
/ E* L0 W! E( ?2 v* M- r7 c2 O( s
- d) w" P. h8 }) x- //输出图片4 V1 \& `) w0 M" [( r; N4 q4 @
- ' R. b( Z% K( X1 h8 _# v! E! G
- imagepng($QR, $Logo_re);/ ^) T: v/ N& ^, v
0 e! m# v8 T: w/ s1 f0 e! m0 y- }6 C3 J4 n) @2 o% p4 _
5 Y9 _1 z2 c7 ?1 ]0 @. F- 0 v$ ]) h+ h, S) W1 s
复制代码 3、qrcode_vcard.php (生成电子签名)
% Y/ i$ T- z% b2 ?$ M6 |; M" r( v: G% n/ Q
vCard格式:https://zh.wikipedia.org/wiki/VCard9 N" Z7 P4 p q9 u2 n
4 c5 r) w- a% f4 s, F0 W
- 9 l# N" t1 T4 c3 K* ^: |: p. h
- * Created by PhpStorm.
$ g) A m9 q3 R h% ~& e* ] - . {& a" t: N. U7 z
- * User: user
# O) B! f! U: V: k
7 Q3 B4 D/ z* e- w! i5 L- * Date: 2018/8/15. x3 [# P: T0 I1 D
0 E& ?2 @2 Q( ], F, f0 U" s: [) B. Z- * Time: 23:00
w+ Y% f' f. s- b$ n1 t W
+ v! E6 E0 ]2 z9 ~- */require_once "./qrcode/phpqrcode.php";/**( E6 Z: {* @. x* g: |9 \; M# r
- 0 C, l4 T: ~1 p1 d' D1 K
- * 生成电子签名: \- i+ K; a/ D' }' b& _
- ) X/ V9 |9 J7 K( I
- * PS;使用微信扫描二维码
~! {/ w/ ~, `) z1 U. c( z
- c" }2 b1 z6 R8 t F# y- J- */$content = 'BEGIN:VCARD' . "\n";//起始标志
* w9 `% ]7 u1 H) p+ r) c) e/ w
- P$ a' p: U4 W. }- $content .= 'VERSION:2.1' . "\n";//当前版本; [" Z/ g" p. A
- - M9 d+ l# \$ z( X% W
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名9 |6 z0 P4 ?2 D
- ) ~# b( P( B" B( i8 H0 f
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称$ w- ` ?* E4 Y& B0 L
- ?. B1 ~, W$ G7 j+ g- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
4 M& f% ?6 h3 ]! l& Z - 8 x5 K# T9 q; V* p6 R
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
. p: c7 n: [( b! W
' @* b3 r/ U# q! m2 U% g- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
8 Z7 N1 q% c1 {* w/ V' @$ ^
; ]% q( o! h/ a! G. A! A+ R9 Q+ u c- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
X9 p& L" ]/ b' ~/ Y6 ]/ e- l
5 x& ^7 C3 O6 y, _" l- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话; f7 U3 U0 q$ N9 f- u. m
- - H- ~& G3 P. m6 T/ C5 [
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱% w5 x; k7 {: i- |) x
- # B; q9 ?' `' Z
- $content .= 'URL:www.baidu.com' . "\n";//个人主页
/ N% E/ I; h( z, n - 4 m9 S* `* H6 o5 U
- $content .= 'END:VCARD' . "\n";//结束标志$ u6 C* K; l6 Q( s) B. w0 Z/ ?
- # d' n/ z* j- x8 d. P
- QRcode::png($content);: H* b5 k% E! F3 u) [% {
# f* D# t+ Z2 {3 p2 [9 \
8 o+ O9 Z( r9 J6 `. E6 D! Q
复制代码
; {' L) U! Q( i& I. R7 f+ y4 r相关文章推荐:
5 n9 p% o& C: _! ~1.PHP生成微信二维码实例
* B/ U: c$ ?. u" N. [& B" u% B9 B! E- v3 U2.php网址转换生成二维码) X2 f% C9 y$ ^+ B- X
相关视频推荐:
+ d3 J0 N$ E# n+ n4 o, Y7 I, H; v1.独孤九贱(4)_PHP视频教程
( `8 `" @0 H. v& b( \' Z \二、JQUERY生成QR CODE7 D. ~% [, D0 P! R8 f& ^4 k
源码地址:https://github.com/jeromeetienne/jquery-qrcode' ?, D& l( r9 u& k0 r
/ C& @6 t i* h2 ^
jquery_create.php
5 N. H( [6 s+ V% n, V+ O" |6 L9 c% W
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
% d3 I5 x7 U. y" w1 q+ q三、PHP识别二维码
& @6 M" W+ n3 W! l/ j& \6 Z1、方法一" w/ m' g# j Y6 ?$ F) Y* W- ]4 S
环境需求,安装如下扩展: ?9 q/ l) ^* D2 E3 S; H [
- ImageMagick
7 K% J# j1 J# y, E& t% h' I- zbar7 v& Z' ^0 \5 e' K) [5 ` A
- php-zbarcode$ T: s/ a3 d4 m$ _" Q5 d4 e7 A0 v* l
9 l. g4 x7 `6 c: W: J2、方法二9 c2 R6 Z9 Q0 e3 m
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以3 M9 I d! x. s# i( S2 W
qrReader类:https://github.com/baagee/php_QrReader9 M* s: Q+ \0 o! V T, N4 l
# E0 k J, r0 w0 d- e- 2 S9 Q8 B( n5 K1 s
- $qrcode = new QrReader('./test_logo.png'); //图片路径 x* \! y: T5 R6 x' @$ s
, c- g& T' I0 ^9 D# n6 r- $text = $qrcode->text(); //返回识别后的文本0 P D3 V* B0 g+ E l4 i y
- 6 _ V$ L8 Z4 a5 H6 V3 k9 J' Q" b4 k
- echo $text;
8 x+ u: E5 O, o5 P! H* e, ?0 y; ?
q* D- N! H) \. ~% p& ^
) }/ | x. G* t
复制代码
+ w) }4 w1 K' u$ o. k# {链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7- G# m6 |" C$ m( U8 i; o
: w8 a/ ^! f$ N' X) H3 h% r2 A
! R2 G" D6 t% Z' a. a8 V% w$ w1 v4 K! Y1 z: O& x" k
( Y8 |$ o* ]; _" Q* S, |+ d8 T" Q+ \. s& q7 L
/ @8 s( W. t* j6 o }# _- ?6 U" l4 F8 y4 z$ N5 `# F' z
1 `# H: \* B' W: y1 o( ~+ ?3 E! K v0 U
|
|