管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。; f& W8 X; Z0 Q/ Q8 @
---------------------------------------------------------------------------------------------------
Z* i8 H9 S" o. H7 W二维码的分类- Y6 p+ J l0 P! q
线性堆叠式二维码, q9 D& N6 u( |+ H
# N. k. X! [$ D1 [( j2 B2 a; J) _
矩阵式二维码
8 N1 L- S& X9 x5 M3 x/ u8 c# _6 @
, n( e7 Z" v7 ^' b- J/ J, k9 o二维码的优缺点/ f7 v L; F. r% ]* A4 B; T
优点/ E( {, z o2 S& }- J
信息容量大
, {9 R( o4 k9 l* O `" Q/ e
' u* r8 ^# c$ n. E6 a2 o! ~编码范围广6 }) v' F1 B) r1 Y6 ^& x
7 s% X ?! L& J8 x# o. Q# z8 s- q, K
容错能力强2 z; P, H9 ?/ w" {1 p0 M. k
; f: V1 a% `6 f1 ]- S译码可靠性高
' X. o; f/ ?6 k6 m, e+ A) T/ y$ C
可引入加密措施
; v y/ h2 L+ K6 ]) P! w! Y: v/ k+ |% M _( w) `
成本低,易制作
+ f6 A: |- ]# w q# R7 M
2 R' {* y. B3 J, v5 ]缺点
" k5 V& F! Q0 ~2 b D# g二维码技术成为手机病毒、钓鱼网站传播的新渠道$ Q" h! D5 p$ |" X) K) u
* @& A0 C. ?/ v. R$ t! ~/ ^ w4 O信息泄密
! M+ X* H W5 H6 `
" d G! H8 j! e, ?" A0 ~目前流行的三大国际标准
( ^- u& T q9 d/ p& ^6 qPDF417:不支持中文
& ?+ c2 l3 ^* G9 \: O" R0 J) H! H% Q) ^" ]4 e) y) b2 R1 S
DM:专利未公开,需支付专利费用
) B8 ~, H/ D( `) p1 B* i x8 [. x, a- h' P1 r! n X
QR CODE:专利公开,支持中文
1 d9 c: M) `1 w$ U
8 h- [) i( N# `+ _$ \, TQR CODE 纠错能力; G- r9 a6 V8 }$ H( A
L级:约可纠错7%的数据码字- a G2 E4 ?& f$ T
; k v1 z$ d. e! v. xM级:约可纠错15%的数据码字- B1 m+ U3 F6 x9 T* U9 S# L
# D5 _+ [- _9 M F& vQ级:约可纠错25%的数据码字
7 A# F& {8 d4 q( \) n1 ]$ F! k" l. }$ M a& e o* F2 ~
H级:约可纠错30%的数据码字 r, C, A& d9 f# T/ h
) A/ C9 I' p1 Y* l0 ]: g' W3 J! J* h3 d# I前提条件9 H4 Y" }7 j& d( Q/ ^
GD库3 m7 M! d/ z- ]& F" ?3 s* h! U
7 D2 g u; f% L9 z' _3 [# L8 x) q一、PHP生成QR CODE$ w% D, b0 z" Q9 j
官网:http://phpqrcode.sourceforge.net/
p- `0 E- l5 E/ l. T/ A5 V3 a9 y a6 C/ ]: C4 z/ E: w2 v K
下载源码:https://github.com/endroid/qr-code' ~3 B5 w# u: P5 |" {0 C
7 j9 g( j y& \+ P5 L目录结构0 U3 q9 V6 M* \2 W% H( w' m4 f6 {7 N
3 ^' e& [. t8 E$ T
4 M5 B1 m2 \& D- g# r* |1、qrcode_create.php4 R8 v' G( Y) A' I# C( V- }0 }' z3 i
ps:生成普通二维码
' q. u) \3 s u% S
8 R( S+ u6 z5 j4 n, Y$ t- include_once "./qrcode/phpqrcode.php";/**. H/ H4 ^0 ?3 _* V2 k0 x6 U$ x$ t
+ b9 l5 U" l6 t7 B. j- m- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
; @; \ y0 a. e; ]8 O - ) e+ B s" p1 w
- * 在浏览器上直接生成一个二维码(内容为abc)+ L8 \, P. @0 `" L
5 N- z# a* S( ]3 |. d9 i- */QRcode::png("abc");9 |/ d6 F% a5 N1 P
& _' O6 c0 Q2 y- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**4 N3 p, J8 ^& o6 }* Q7 t
- D# T8 d$ q0 e$ k7 h0 R2 \+ q) n
- * 生成文件到本地! n$ H9 ~- h1 W$ |. J/ R( z
3 y! ~, s2 m- c3 J( y$ R- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
7 O1 O7 z, l5 H) y4 W& h0 s' a - 3 ?/ _" b1 i1 s- _1 c
- * PS:$saveandprint源码的p6参数做了修改- J; Y9 L O& Y' o
- % j0 |) Q" b; Q" n
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
& J V- l" ^3 h - 9 `2 Z1 T( I* Y E2 z
- d3 p6 J9 t4 V! ?* u' Y* _3 ~
复制代码
, j, j* t8 b& {( A* ?) C2、qrcode_logo.php/ h* @# p+ f" Q2 f, Z2 H1 D9 E
ps:生成带Logo的二维码- * K. t. y z4 r, q
- /**5 r4 }. z/ a. ]& ]& B* q
- 1 R5 x2 S* o, S8 w
- * Created by PhpStorm.
) T5 R/ s3 g( R6 e$ n: w
& L9 G3 L1 e& _4 ~5 t: g; X8 ]: {- * User: user
+ @8 o" Y! g7 G7 ~: k
9 q( F) V7 v3 c2 f$ I* K- * Date: 2018/8/16
4 b2 M9 @" v; e H
+ x4 l1 f, S- \3 o, P1 I1 M9 e D- * Time: 10:43
* q: `1 H* Z/ C% v6 V! i - + ^$ X" C" g8 c" e3 ?: b( V& b
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";
( j; H4 a# c* h1 y! a r, r
: d+ Y. ^9 j0 v7 A9 c$ A/ A* }- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
4 r0 k0 k5 r; A/ ?! [5 y/ | - . R* a- c) P$ O) G+ F
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是$ a5 q- F/ p$ q' N6 U
- ( p" M4 y- G7 @1 | Z2 a( X
- $margin = 2;//边距
1 _5 S5 ]% z8 d2 p5 T& ^
8 T4 X% S0 Y6 d$ e1 p5 d5 a. I- p% {- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
- {; H( |2 r0 x% O1 R' I. Y5 c - ! _* a l0 C' L
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ # L$ s4 Z/ C/ e
, y, \. J. U, {- $QR = $picPathAndName; //已经生成的原始二维码图
+ q# g- l; h# u- N2 A/ W2 a0 R - 2 w9 [% z$ T. f
- $Logo = './pic/logo.png';
' ?/ E: }. H1 q7 _ ^9 @) t - 3 K) v5 k5 U! L# ?( ~8 ^
- $Logo_re = './pic/test_logo.png'; # ?1 ?8 e2 T5 d- G$ b, e; o
: z8 w% E7 N! }; n9 u$ w# F7 `, X- $QR = imagecreatefromstring(file_get_contents($QR)); ! ^# Z4 U3 m( C3 D6 {
- @3 \5 h- G( o- $Logo = imagecreatefromstring(file_get_contents($Logo));
+ U4 f0 H. s6 l3 m6 t
4 h, R" j2 n1 K5 J- $QR_width = imagesx($QR); //二维码图片宽度
7 p3 t4 d& I2 H
3 [; t' Y5 \3 `- Y$ O" R- $QR_height = imagesy($QR); //二维码图片高度! G) X( f' f! B. v
! h2 x6 G3 X- E- M0 }; |2 \- $logo_width = imagesx($Logo); //logo图片宽度# v2 D, t& o& H4 {; c( C0 z* G
; @: C% D# d& Y/ F- $logo_height = imagesy($Logo); //logo图片高度
4 d! D# K0 g1 ? - % O1 ?% `- ?2 i) [- Q! k
- $logo_qr_width = $QR_width / 5;
" B8 J3 E$ j4 `/ C
9 S( ]' l1 J6 L; @) f- $scale = $logo_width / $logo_qr_width; ( f, l4 a. Y: s2 v1 y p
- ' z( t* P% @4 C
- $logo_qr_height = $logo_height / $scale;
O' B) S* P! k) } - & N) o5 M5 J' A; `) d) L' j2 x9 x
- $from_width = ($QR_width - $logo_qr_width) / 2;
: J% |; r# Z4 m% u+ J# ~3 k - " F% O' A; X7 B
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
& r7 t6 K! \$ w7 J0 u - 0 b& b! i; p6 \. k. g& l( G* b
- //输出图片
' `$ g9 F: {. i, `! U& U
$ T$ C5 B' Z3 S8 S- imagepng($QR, $Logo_re);
% m) Q0 j: N, V! E
8 c. g8 T* U$ `* H$ Z( K- }
/ }- @" }3 T: I: x* {$ @/ k S
: I# P- j) n, u! P8 T3 w& }2 M2 Z
9 n3 v6 e' d1 a* x
复制代码 3、qrcode_vcard.php (生成电子签名): w1 F0 M" y* u: u
( ^- i5 j7 s7 HvCard格式:https://zh.wikipedia.org/wiki/VCard
C! }4 v" F! |9 Y( v' O/ x# a( ?5 w# H; q- B) B8 B! r2 ]& O1 @
- % m7 x+ e; c" _/ W( V+ v
- * Created by PhpStorm.
& b1 Y) S. L# J - 6 D' V" Z, h0 x1 g; E( }, [
- * User: user# F1 M. V: s. m: T5 {# d
& a5 f' [* ?" O/ d; v- * Date: 2018/8/15
l, u/ o; Y& v% J; o% g3 }- t o
( k- _4 d8 I0 q$ {1 l) g4 l9 G- * Time: 23:000 }3 R0 G. O# p7 u" {
- ( h. ~: o$ U1 z4 M) e4 \! P2 ~
- */require_once "./qrcode/phpqrcode.php";/**
0 P2 P& X" l" j7 i- t4 P
/ C& [% {4 E6 q& C/ v' t- * 生成电子签名# |0 U% d+ `' {) e7 I, q
7 V1 }9 P- K J# K7 f- * PS;使用微信扫描二维码: T4 j3 P# r' H# z9 M W
- 0 I$ D; ?. V, k
- */$content = 'BEGIN:VCARD' . "\n";//起始标志0 ?$ R `. L5 D/ {& l3 {. e+ m# _
- 3 k3 N: q7 K" _& B9 p: B
- $content .= 'VERSION:2.1' . "\n";//当前版本6 M- ?* n' g' x$ _1 Y
5 I2 |1 |2 A6 D* }' |- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
7 d! E+ E* g- ~, s( s. d
@+ r4 x/ {% E) X7 e- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
- N3 A7 d- T3 g" {# K' N
4 x" x# E' T$ }- G/ h! g- $content .= 'TITLE:PHP研发程序员' . "\n";//职位* c1 p4 r' m5 o/ R0 ?. h4 @ u9 u
- / D. v+ j7 Y9 ~, p, c6 I
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
, l b: M$ `( o - ( u8 J* F+ B/ c" y6 n& f
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
0 e- g$ s+ ?& F5 i9 R" n
+ U5 N8 m7 D [- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
. o5 i# j) O, c+ }0 ~4 f! H! o: G* w - 5 F) i; ^* z" [7 x5 H, [9 l, K( @* M
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话# [. i; V# H7 ?2 ]: O
- 4 R3 ?2 c9 T* L: C
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱! n$ s) J: S+ }+ c5 `, o
- * {" {5 n+ O3 ?/ B* V+ e1 H
- $content .= 'URL:www.baidu.com' . "\n";//个人主页; i' q- ^6 \9 e" w8 `
- # Z( k9 H2 {7 H- c( S% ]
- $content .= 'END:VCARD' . "\n";//结束标志
8 F. s! f- y& N) _- ~5 U
1 X' v/ R& q# f" [& Q$ l- QRcode::png($content);
. \8 l! R5 L# d- ?; O9 \
1 M: @" F. Z1 [: K
- ~0 g" x8 [& _+ [
复制代码 ! `! t; Y; o Y! T/ G
相关文章推荐:; }! m3 n# M7 e/ O8 _# I+ R
1.PHP生成微信二维码实例$ D: U0 y6 w3 U! C# Z: k+ {
2.php网址转换生成二维码
! o6 N$ J8 b6 J相关视频推荐:
" x$ }& x% e; U F1.独孤九贱(4)_PHP视频教程7 q* W, b& ]: B6 @( s
二、JQUERY生成QR CODE
0 |/ {& k' }0 A: k8 ]# y源码地址:https://github.com/jeromeetienne/jquery-qrcode. M( h% l! X+ `; F0 I1 [
( ^* I8 ~: E2 J) ?/ m' r
jquery_create.php
9 Q2 f) n( Q* H8 k- p8 G- i+ y
. n0 N% ?8 F% g1 h- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 m' V+ I7 k1 @
三、PHP识别二维码" `* Z4 i, }7 {# M- z0 a+ E
1、方法一
( q. i, |; ?/ x! f+ K环境需求,安装如下扩展
& z3 z! a$ M1 G- F; R- ImageMagick
( W+ N( |' {' a% r; N; x- zbar" x6 x0 I7 u" b8 y! v1 a2 V d/ _
- php-zbarcode. h: [+ @" ?' d- i) }
, G. }' ]7 W& W+ g
2、方法二
9 s* \9 r; x7 T) \1 fPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以 n7 i9 t! _7 Z
qrReader类:https://github.com/baagee/php_QrReader: I/ ?8 A# {/ o8 _+ |8 a
$ H( E( T! h3 ]: F( p C1 H. E
- - y- c; _8 F' | x9 O
- $qrcode = new QrReader('./test_logo.png'); //图片路径* l1 v2 h$ X3 a `, B
- . ?* d5 [2 \2 I6 I
- $text = $qrcode->text(); //返回识别后的文本
( J+ G" i! A' u3 l& r4 o
; l$ S5 S* N* m( S& {2 U" C- echo $text;
- x# N+ X2 Q5 f, R9 I/ E i& _! x4 s
$ Z* v S; a& c" e' Q9 L- $ `0 O7 |6 U+ |0 m" a( ~/ Z$ `4 H0 N
复制代码
8 D' P% E* [* G" t) e9 A链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7! r1 A3 g3 h! m. H' N+ [! _5 v
3 t: T' B8 L. r" p# p8 v& J
+ j3 V$ O% `5 ]& Q K0 L3 d
0 n% Q+ o5 A6 [; j7 S7 y8 F- i9 R- ~0 m4 p
: w& A! Q& l4 ` L i. W9 Y) Q
- l w! Q/ Q! [0 \4 F0 ]9 ~
6 R- }, B ?( O% w& u9 l5 u1 v* k. y0 g
& ]1 ^7 e, |. j8 o- F& k
|
|