管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
% s" o/ _! w; {3 m4 S7 x---------------------------------------------------------------------------------------------------
: X' {5 x( z6 J! S6 m! _二维码的分类
* ]+ l9 \/ o& H$ b5 S线性堆叠式二维码2 T) P$ ?/ i# J2 o; y+ h4 f& d* ^
6 D0 M& x" p/ }8 o4 W A
矩阵式二维码
1 v0 d* s) B3 f9 g2 R- _1 K# ]0 ~. ~* {2 ~1 {1 Q
二维码的优缺点% P1 l# `+ O) K$ Y. Q/ p2 z1 r
优点
6 f+ K' O% K$ g$ i" K信息容量大- ]8 p+ t8 ] Z; ?/ M- \
8 P4 O% j7 Z( R v* ?2 T编码范围广
4 Q, U3 A1 M( l* A/ P# q* y
: ?% I2 ?. \; \5 ?7 F E容错能力强' S1 u! _& |7 }) Z) V
) Q1 b9 l8 W: ~
译码可靠性高
7 Q8 Z: K }/ S- E3 m4 ^% o" ?5 p" y% A/ ~
可引入加密措施
) g5 ~8 ~. z0 e1 Q( P# k
+ ?, X: `- v2 E" _, l成本低,易制作
- {- H \. `% L: d0 q/ t7 X4 Z7 j: Z5 s
缺点
- Y z4 A/ g$ N9 B二维码技术成为手机病毒、钓鱼网站传播的新渠道& C! x+ }$ u6 ]4 O O3 y
1 D0 ^- E1 D8 ]9 `, F) ^信息泄密
& o5 ]" m0 S0 e! T+ D" z
* n- y# A! u# Y* o6 x1 g {" S( ?5 t1 M目前流行的三大国际标准
: p8 I: n: `1 p3 H5 FPDF417:不支持中文1 Q+ F6 ^! T m
+ P4 N A. N# J
DM:专利未公开,需支付专利费用7 n; z$ X& ^6 ?! e& L9 w
7 q; s6 F. W* v% x4 `. E
QR CODE:专利公开,支持中文( D* R6 F& k0 `9 C
% y# R$ ]3 n# Q1 T; @+ h* E. dQR CODE 纠错能力( V! F; e6 J6 a. h+ B7 g" Q
L级:约可纠错7%的数据码字
, D/ U% V6 D" B/ t5 b
* y' K# v7 s2 q- |9 I1 C2 iM级:约可纠错15%的数据码字
" ]" v% Q% t* l) q6 m' h& U6 w/ m; R3 Q1 G7 C" M0 ]& U9 b/ l
Q级:约可纠错25%的数据码字
6 p5 }! F; ]/ H- V" V8 ?9 Z7 L+ x0 G: n1 ?
H级:约可纠错30%的数据码字
/ @- Z$ A3 f8 E
: q/ @+ X9 l S' ~8 b5 N前提条件( a4 K5 q( ]0 g2 ?+ z @: g5 @: i3 V
GD库) D' k+ M, w& f$ e3 K
/ ^6 [7 j- ^) |% t% N一、PHP生成QR CODE1 L+ C5 p: c/ }) D/ w2 A
官网:http://phpqrcode.sourceforge.net/( l% O2 l* ~0 h2 s% K, O6 u
) p# n/ H7 Z: v& v
下载源码:https://github.com/endroid/qr-code
* @- r7 J$ y9 g6 t y) K6 o r E: `6 K( s A
目录结构+ B; V+ C5 R2 i6 t K
: u6 F/ y2 U% c* I) X" B X0 |$ l% b1 P3 y& ]9 z
1、qrcode_create.php5 F" b& X9 S0 b
ps:生成普通二维码' u: M2 I/ f0 M, R- K) x6 H
- & r% U: f( l9 C
- include_once "./qrcode/phpqrcode.php";/**; g4 U( g: ]% X) k( D4 F& w
- 7 @1 x6 K8 E8 g p4 A- }; ^, U# J
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径- y. x) k, N3 M( C3 G2 L
- ( Z& u; s( U' U* |; y$ A$ I$ r% _1 O
- * 在浏览器上直接生成一个二维码(内容为abc)
6 b3 X( b/ W, B( x/ }* E, f+ ~' `
0 H# s' M! E9 _0 O- R, o+ A8 M- */QRcode::png("abc");& I9 C# ?' N( F
! N# ~4 ?- Y7 ?6 [9 w- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
, q1 _" t( D/ D0 H6 j: J# o& f - ' T. q, O7 o2 T+ S- _
- * 生成文件到本地
4 @' R: u7 ?, q) P- ]* S
# w2 e; S& c6 a' [+ {- R* a6 ^- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
9 A, T- V% i0 V+ G - ( F' w' N, E0 I
- * PS:$saveandprint源码的p6参数做了修改3 @ Z# Y$ w }4 y; g
- 7 y' L/ g0 ?4 Y: e- F1 c
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);+ U" X5 d1 J7 y
- v8 v/ P5 w z# e- m2 q
5 V. x6 c5 K8 \5 w( ~- g: O9 m
复制代码 ; [3 F- d5 d/ P7 Y' S
2、qrcode_logo.php% `: a, v5 x# o( N2 w1 @
ps:生成带Logo的二维码- ; A$ t6 }% t. @( ~5 a( J. ?4 u
- /**
0 m+ j/ t6 k# |+ M4 x; C - 8 _# n' d+ O* `0 a9 Y
- * Created by PhpStorm.
; Z$ c# i+ Q9 ^ - , E1 `1 J! e5 A, Q
- * User: user! H! v% J6 M- k2 N* R
+ i) ?3 v/ }! |6 H% D; _! j- * Date: 2018/8/16
; [! R5 u( ^* o$ T! {' A" l
( v! W& \* [2 M( {- * Time: 10:43
; W6 p; t, y& D/ q0 x - $ Y5 Y7 h8 @1 f$ A6 w/ B
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";5 s. X0 I1 }* n y; d$ E/ M
! P1 i, c" D4 O# I- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称1 r2 S2 u9 e6 g
- % q0 d }/ u) u' j1 e) G! n# r
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
/ y. N6 N& }9 D( U - 0 l9 u* W& I: ?
- $margin = 2;//边距; i& u! V. Q9 \4 ` O) {
- 5 d2 i& T/ s3 c
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
3 q7 q4 m2 H& l( @" m; _% ]
7 H: o) P& q, h. ]$ h2 n" d; ^" _- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
m% x; k! L5 N+ |& x1 L% \; M - 5 W" N* X! s, P# j2 ]& M
- $QR = $picPathAndName; //已经生成的原始二维码图
, q* c4 c$ Z; c2 b1 K0 B
. \0 Y/ t& G1 r' d" n" G- $Logo = './pic/logo.png'; M. W6 ?3 d. m3 h
; {7 C. X6 Z9 B5 |, ], p- $Logo_re = './pic/test_logo.png';
$ N! s9 M! e# K3 w
$ t* `% v: E$ j6 ~$ k% R8 _- $QR = imagecreatefromstring(file_get_contents($QR));
, `: p- W0 i. G1 @; U0 I - & `- l9 v0 ?0 U) |& U: A- M2 b
- $Logo = imagecreatefromstring(file_get_contents($Logo));
! h0 g s4 l0 i! n- \ - 8 o4 ]* d( D# z' v$ [
- $QR_width = imagesx($QR); //二维码图片宽度6 c K' m! R) `0 v' ^+ f* |
0 b# O9 f9 [2 {3 {! k6 d, h- $QR_height = imagesy($QR); //二维码图片高度 P' T; s) t2 m( H
# o( a1 e6 U0 a4 z+ W& J& a- $logo_width = imagesx($Logo); //logo图片宽度7 I7 B o- F- K& K9 V
6 T0 X L* \$ K# G$ N2 `- $logo_height = imagesy($Logo); //logo图片高度4 H4 W- Q9 B! k2 E- z
- & J: n: B$ ]4 ?6 H) d2 k/ l
- $logo_qr_width = $QR_width / 5;
9 I9 x- { ]+ q8 I
, w2 j' N {7 W) U! o, W, p- $scale = $logo_width / $logo_qr_width; 4 N0 z9 a- V3 O8 I# c
6 ]$ F/ S& r# q' F9 _ Q$ `- $logo_qr_height = $logo_height / $scale;
! S& O, _) P/ i! |
* \0 I- e H. e+ N- $from_width = ($QR_width - $logo_qr_width) / 2;) e2 C0 B3 _0 z8 x4 @& F
- $ e: W$ o- ^5 W. c5 ~4 l# [
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); ) [6 k$ p+ u" q4 Q |3 H
- 6 {8 t2 B Z$ z0 j+ |
- //输出图片
4 s: }, v5 \2 u) l
. z4 L# d r8 f3 H- imagepng($QR, $Logo_re);; S0 S6 C- {8 Z$ k
9 [$ p% s8 T N4 s6 v9 Z# d- }
# e7 o) H4 t0 O5 A6 a
' q# _5 ~, m# o1 a- ) H7 w* |* s3 Z8 R b7 `' u; l2 C
复制代码 3、qrcode_vcard.php (生成电子签名)
" z, f2 z4 s, l5 V {0 ^/ u- J0 m# P2 h9 i$ T( j2 [
vCard格式:https://zh.wikipedia.org/wiki/VCard
9 A. }6 H0 e% s2 W# `! ?
5 O* ]/ y- x2 s5 g' N- - H8 u3 V: \! c! v& c! H
- * Created by PhpStorm.
7 ?$ H5 ^ t' z/ }. z" w) H
9 t: I$ p4 E$ n% ?! y- * User: user
) L! U. z: w y; ]/ c# m, I4 B) Y/ J - ; @; S% r$ Y5 }& p" h
- * Date: 2018/8/15+ t" x: ?( Z0 o' z o7 \# u T: g
+ O, S" N" `7 F9 ~* j# E& e+ a @- * Time: 23:00" {- |9 m6 C3 F8 k6 A. d* x, u* u& A
- # B- \+ X- w5 U+ x7 Q8 Q, P* t( B
- */require_once "./qrcode/phpqrcode.php";/**
* r( M5 r- Y2 p* G) u
* q1 Y/ k1 r$ n$ m4 e |: Q- * 生成电子签名
4 j" o( @# Q$ ^5 h; D% S. E
$ ]% ]1 t8 L+ }( Y G9 G- * PS;使用微信扫描二维码
3 D+ l" \$ @5 a j7 _' [ - ( `# Y! \& E+ X% p
- */$content = 'BEGIN:VCARD' . "\n";//起始标志
* x6 V% O& _" N2 u0 K' e+ J, w
$ d4 c; U9 G% F9 x; T$ i% R) m- $content .= 'VERSION:2.1' . "\n";//当前版本, O5 L' ^2 _( V! a8 x
- O7 t: B$ t/ d U9 L8 P
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
3 X k7 q; f6 i3 `5 g/ S
6 m1 @* D0 S0 ?2 h- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称2 q, d* l. {+ ]1 \1 v |5 u# q
- ( T9 i& }, R. I+ T
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
0 h( d5 ]6 E6 W' D - 8 h/ c' ^. y* p3 {: t& ~# I
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
# ? \- l: Q- q7 a( Q } - - s, Z' K4 f2 D0 H
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址! C x* ]8 A* G! k8 j ?/ \
- 0 O: y: f( W" N3 H. W# Z* W
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)- f/ L) @8 }" N* @& e$ S z! B
- 5 t* v" Y0 x) e9 m. J) e! j
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话& }, D% M2 J2 H0 @+ B0 n
- 0 R( V8 s8 W4 t; E- j
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱3 s M( O: {" H0 o
- 5 T: e; f7 t% h) ^2 ]
- $content .= 'URL:www.baidu.com' . "\n";//个人主页- o8 n/ l l1 U) O
- ; O; r7 v) p9 Y+ i
- $content .= 'END:VCARD' . "\n";//结束标志
' @5 r& M1 H& ]2 p- [. ?
3 \" S+ X; e1 R( [$ g2 P0 O! T- QRcode::png($content);5 }( C; A8 Y( g$ U7 Y0 O" r/ T2 p0 v" v
; p0 M/ g! w0 ]' c# g" M
. @0 p) r, l' {4 P9 j
复制代码
1 Z2 |; Z# Y: [/ L相关文章推荐:
+ s* x: q+ R/ ? V, Y4 e" i1.PHP生成微信二维码实例 S/ Q* `& } G1 {* O, e. J$ k
2.php网址转换生成二维码
' Q% {+ a+ [: t# Y+ H9 Z& C# ^3 a% j相关视频推荐:
" k# E" A& f" g# m' R1.独孤九贱(4)_PHP视频教程: i1 \9 G2 i" ~% U4 e( [) G
二、JQUERY生成QR CODE( y& z" y/ S5 w, n# {1 Z
源码地址:https://github.com/jeromeetienne/jquery-qrcode6 u+ m8 s" L" n# p3 a' b
8 w% L* P: \" N5 `) V7 y
jquery_create.php
3 ]% O4 {$ C6 i: a' u# a
5 M: z' C4 G! d- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 4 Y1 g# j1 F: F. s; q7 X
三、PHP识别二维码3 Q/ R! l; V# {; }# p* T8 {
1、方法一' P1 _4 b; a# r s8 g! X9 r$ D. _
环境需求,安装如下扩展
A, V0 J! H# m2 `/ L- ImageMagick1 f. b% V. t9 W2 t/ f
- zbar, T9 d7 ]9 ~. Y) z
- php-zbarcode T' Q6 r. M+ h" R. W
' y- P- R1 {: c
2、方法二6 K; J6 m2 Z# v6 m
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
) [' B$ t" j" [( X/ B4 ^- cqrReader类:https://github.com/baagee/php_QrReader1 @1 K1 l+ j1 k# M) [# J8 X
v; X) T$ U2 h
- 7 z" F6 Q7 g4 x" p2 V/ ^
- $qrcode = new QrReader('./test_logo.png'); //图片路径: V+ w( s4 {) b# b7 [
- ' O- B/ A, z$ X( @/ R0 W
- $text = $qrcode->text(); //返回识别后的文本
2 R- {4 Y2 q% h" i
) e" Z1 N# E- o, ~% e9 l- echo $text;+ l$ N6 F" h) `( U* a: l$ w4 h; g9 Q
( o/ [% G8 d( @8 D
9 g8 w9 \% c I$ I. I
复制代码
& Z$ K7 E9 F8 p' ?2 O链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7 B S4 ]: I& @; b9 A
: F/ T8 _# { P6 m% @
0 ]3 a( Q/ |$ g! K; v& n% G$ D2 @. g Z$ B
1 _1 L6 o" s- t2 V3 T1 A* A- ^
9 h: N/ Z: A! X' g g
: u1 G ~9 `7 N, b0 N* X
$ q, ]& c& ]& M% [, M) v3 a" @6 v. @, |
4 n5 {1 A e8 @4 G+ x5 _* _/ X |
|