管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。, V z$ u A# E) P% T# I3 G
---------------------------------------------------------------------------------------------------" D8 }- U& C' u4 C
二维码的分类
$ c) y [5 W. {% f0 ?9 Z线性堆叠式二维码
( m5 z; N$ [" \+ n5 O! m3 f5 I- o6 v! E4 Q% E
矩阵式二维码9 ]7 H. E2 v% q0 \- Z: y
: p- C/ L& _ G/ V
二维码的优缺点: V( c/ D3 w$ M6 ?9 K8 D
优点
, ?, z" G8 S9 k0 X! t# e8 r信息容量大
5 K( _; e ~" F! r- ^, m( v/ f2 J
' U; B2 ?, ^9 Z) y( W编码范围广
p" k/ l( ?$ C. q; [$ i
% Z1 L7 t* [% j* ~8 |/ t7 K容错能力强
; V/ U* c) w* I7 t% R) R7 t1 l5 M6 i, y5 M* ^' E
译码可靠性高
0 B7 N; @+ d0 G6 z1 Z2 \
% v+ A' ^" P& U$ \可引入加密措施
$ D- o" ~; D+ X& v
' B+ N5 T" t7 E6 y+ Y成本低,易制作0 b4 w/ d5 F) g! `3 l# o
0 `; H. @6 w) b% X4 j7 |
缺点3 P* w$ Z3 ~* l& q! a1 S
二维码技术成为手机病毒、钓鱼网站传播的新渠道
# S3 h3 W/ \% W, H' Z
. a# W" x% k1 F2 H1 z$ v信息泄密
4 ^- M- C5 i* Q& d+ A2 N
+ n, z; z4 K% j4 u0 H目前流行的三大国际标准
y; l+ G) V& F! ]' G( rPDF417:不支持中文
$ E; p+ U/ }- E) W5 f# F9 l
6 k. h5 E( @3 o1 H" q5 o# kDM:专利未公开,需支付专利费用
0 R% y2 p/ C4 k) I; G1 d; w0 a$ @9 k! H' F1 b$ }/ u( h
QR CODE:专利公开,支持中文% D: o }) g5 u
( w# |" a' V' D' ^; ]QR CODE 纠错能力. ? M# b: h( g8 k# _6 _
L级:约可纠错7%的数据码字4 [" T, l2 E8 |8 b1 s" n- s
8 h. I" X1 n8 z% `& Q v! L
M级:约可纠错15%的数据码字1 q7 r* k+ |. P" Y( K; w: }( `
8 B4 M" v2 ~6 c7 m2 JQ级:约可纠错25%的数据码字( f" b. J; ?! H9 T3 J% x1 V
8 [# Q5 r l! y9 \H级:约可纠错30%的数据码字7 w& w% @& ?4 H% `# Z. ?9 u x3 i
( D4 g7 t i! j6 C: ^2 U/ T' i前提条件
8 }2 b5 u+ e* a) u+ S. _/ ?! XGD库2 u! V$ Q. F$ A' o+ l& M
6 L) s& O& q5 H( q6 G+ t$ R0 a4 i- B
一、PHP生成QR CODE
+ ?' P9 q1 U1 X# q2 d; R$ U' U官网:http://phpqrcode.sourceforge.net/
, t( c3 d5 {$ z( C) R; t, j
/ X" y/ T: a# p% {7 s& |下载源码:https://github.com/endroid/qr-code
. M( x' S, |* u; l5 d. b
; Q: q# |- R( g* G/ i& v. s7 P: ?1 `目录结构" w5 o( P% ]- n3 u
/ S- b v. l/ G6 j3 {4 o6 T" E5 r% a9 |- v' c
1、qrcode_create.php5 O" T7 i Z: A8 r8 ]0 Z0 E
ps:生成普通二维码" ]5 ]% q& u2 }9 K4 _
8 |8 x5 c9 ~ ] J- include_once "./qrcode/phpqrcode.php";/**" M* j: r, O: }4 Y; l$ {1 J
- # ]& x6 M$ n" z% I0 m
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
( y; F. W$ M0 H) x+ i
1 C; X& f3 v- ?4 k- * 在浏览器上直接生成一个二维码(内容为abc)0 k' z4 `; i$ [+ I
3 Q) {2 h9 K# h x. A2 G. t- */QRcode::png("abc");
# z: i; y2 V! t' a' t - 2 R6 ]1 @* }, \( Y0 }" |
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**- d( G4 q5 q0 C- [ k7 Y6 o: Q. G
' c1 z3 f; F4 b* l3 h# m- * 生成文件到本地
6 k5 y" U% i$ u' B$ V' H5 D
6 w* Y! e8 h: G8 c- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)* @9 h5 X0 A% X: f
- A1 e' [! ^9 C" u: t) _: I- * PS:$saveandprint源码的p6参数做了修改
+ G, k. X9 F# a: D9 X0 L
4 N( q3 _& }/ ?/ l- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
, V* C8 Q0 U; Y6 {) c5 w$ F - 7 D* B7 r' @- p5 s. ^
2 q- G1 c* |. a$ E( H
复制代码
! Y) Q6 @. `6 [9 K9 [0 v+ ]+ [2、qrcode_logo.php' l% q- [0 ]" b3 D' E1 g: y9 U0 j
ps:生成带Logo的二维码
5 G8 t. N0 n% ^0 b- /**+ q7 m$ |$ e* e( b; M6 n
- , S' e% |# O/ I% b; j0 W
- * Created by PhpStorm.
$ Z- f# m4 X$ ?2 [; t2 Y - % K* E+ ^$ X% Q7 W0 {
- * User: user# T! j1 P7 g6 c2 I* k2 w! ]
- , H/ F3 C$ l$ { i# d
- * Date: 2018/8/16
8 ?4 H+ G4 X( o
, ^# _# \" u$ E8 p! {- * Time: 10:43
9 {; d0 V& ^! V2 j
6 N8 ?& J1 u. P0 C+ P `1 A- */include "./qrcode/phpqrcode.php";$txt = "测试内容";
/ a5 O* {; o! J# a
- L1 o+ E5 j* |% p1 @5 P- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
8 |- \+ l2 M: Y( e% S - ' p6 K& N4 y6 b* G
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是2 ^" d2 s) \& t1 j0 v9 \* q
- % q H# J% c/ {6 `0 e- U; v: x- t
- $margin = 2;//边距
7 X, Y; l7 ]( Y - 2 x0 r: p$ q+ u
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片1 g6 I( t9 J0 N+ L
- 0 d1 h- m* P, i6 H+ u6 e
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
$ i N$ f5 o; ]& n- T& g
' O m7 p+ O- p- $QR = $picPathAndName; //已经生成的原始二维码图7 ?$ n0 n1 ]- W% @* N: f9 u
- ' A1 [1 U, M4 x3 H: F, f
- $Logo = './pic/logo.png'; ' A: O- D/ S3 E( s, l$ |6 e
- , w0 N0 h+ O, K7 t! N
- $Logo_re = './pic/test_logo.png'; - ` R$ }( X2 h0 C. c8 k
- * S; o: u+ Q: q3 S
- $QR = imagecreatefromstring(file_get_contents($QR));
. v, L5 E- {5 ?
8 n# ?' b: J) ?2 R$ b! _- $Logo = imagecreatefromstring(file_get_contents($Logo));
' K: A' [. n: P
/ O# l% \( w" F6 q9 w) L9 Q- $QR_width = imagesx($QR); //二维码图片宽度& ?7 e* R1 S6 M! R0 d( v/ v, Y: _6 b
, J" X ]% `/ F* O; w* U; {3 C, K- $QR_height = imagesy($QR); //二维码图片高度
: D& M! c3 n4 J& _( m0 o - 2 Q1 [; k& E% u, g$ c' A
- $logo_width = imagesx($Logo); //logo图片宽度 Z( G) T4 W: \/ l d
0 Z8 R: _) [4 H/ y! P9 c- $logo_height = imagesy($Logo); //logo图片高度6 ^ k) E1 L/ E, k8 |$ [
- 8 H2 B% h8 g% D+ h% `) a, y; N
- $logo_qr_width = $QR_width / 5; + K2 I4 b* O2 T9 s4 G7 W
& Q( M8 I& n# ~# f% X/ n- $scale = $logo_width / $logo_qr_width; 9 \$ P' L3 U, o
- ! k% A9 E3 D6 s
- $logo_qr_height = $logo_height / $scale; ) P/ S- _4 P# s6 j
! l+ \1 N( ?5 _9 S( e+ B- $from_width = ($QR_width - $logo_qr_width) / 2;& n4 k' L4 n4 u8 R( `" k% X
- ( ^2 V& M) s/ l- ?) b
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); 6 a! m) f) K% b7 h# _2 x+ ?* q
- : \# y/ L7 J1 E7 n
- //输出图片* V2 ]" H8 u1 Q. V
' T& K$ I/ F3 _- imagepng($QR, $Logo_re);
" l+ z+ x4 R+ V: D - ( T0 r: R. u _. P2 ?! n" f
- }
' H/ M2 ~7 t$ L P0 T# P
2 ?5 h0 ?6 \4 d- `+ X* ]( `9 A
1 H% H3 C5 T" \7 Q& \3 j9 L, U
复制代码 3、qrcode_vcard.php (生成电子签名)
% l5 C( ~# F6 b3 f0 I2 B
. V9 H- w) g: e3 B1 K, h5 wvCard格式:https://zh.wikipedia.org/wiki/VCard
" s3 N9 S O. [" R& l* M0 p$ y6 c% Z I, e" Y
- * {- E. ~4 Q0 L: C5 K8 `/ A
- * Created by PhpStorm.$ K7 C% e) ?0 N( D- `3 u
7 S# s$ J% H7 y1 [9 w# L: x# s- * User: user5 m( o& \3 D' e* G* B7 Y
- 2 |/ O2 ~+ z9 p/ @
- * Date: 2018/8/15' M* N- Q a ]+ t& P* f* r
- 0 o2 A- ?8 V4 N3 R( e; \! i
- * Time: 23:00/ [) @" u7 ?6 x3 j' w
9 i: U& ^+ F' H7 r# D- */require_once "./qrcode/phpqrcode.php";/**
% M: B4 `1 {, G9 w2 ^ - / _3 s3 k+ e7 b) _% q X. T0 {. E
- * 生成电子签名3 [- ^5 B0 `$ h0 S2 h# j: D
- ! @. k% y8 A# D# _# S" c
- * PS;使用微信扫描二维码
! k' m, U9 K- v1 T; v* q1 I8 n5 W
4 D2 F9 r1 C2 H" ~ q N7 \- */$content = 'BEGIN:VCARD' . "\n";//起始标志, N3 _' B) j! d8 Z
- " O1 L# I, T# a' z' }5 \ x# [
- $content .= 'VERSION:2.1' . "\n";//当前版本
; n9 c! G R+ J* Y9 f M! F - 8 h0 ]: ^" p/ X' Q
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
- Q+ {/ m0 [! B) ^+ X - ' N! z- J( n6 C5 t d: V
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
& V* ]0 Y+ P4 a3 I7 N) | - . _+ a5 I# I% s3 b) k) {
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
5 i) S( ` L) ^7 q1 i - " g W( P, A# O
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
~- E, a# b8 z) j: X
9 G2 g6 B) s8 ^" O# j9 b- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址1 E7 X$ o& R9 g, v! `2 n* {
8 x/ d) u u" ~7 _2 b; x- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)% S Y8 v6 \8 e: i/ E6 T
- 2 L* s. a- ~1 ]2 J' P( R1 Z) T
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
9 I; a7 U3 k9 h
( b) n/ k+ f& H! O0 _ S- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
8 Q9 @ ^$ d: ?3 B2 r
: K/ \! X5 U1 R8 N2 x. ?5 R! g- $content .= 'URL:www.baidu.com' . "\n";//个人主页
C% b X) ?6 U) ] ? - ' ^' }- n9 v7 s; t
- $content .= 'END:VCARD' . "\n";//结束标志$ T5 I$ J( y' p3 i) }+ T/ p
. J( X) \5 G, R, R" C- {3 ?% L6 ~- QRcode::png($content);) @, `4 g9 N1 n" C" e
# U5 h( g( n# t8 @
4 y/ W4 A4 d; p
复制代码
# t; E' z* r2 c" m$ w相关文章推荐:
4 }' q. r7 H- U; z) x# |* o1.PHP生成微信二维码实例
6 p) ^7 X! v/ j3 t( W( F2.php网址转换生成二维码
1 Y4 d$ ~" N: {* A相关视频推荐:
( L/ R7 ?& U2 H1 ?3 @+ H1.独孤九贱(4)_PHP视频教程( p8 l8 V/ V( }- I; y, w
二、JQUERY生成QR CODE
$ j" f; ]2 m" O& y/ H+ v3 }源码地址:https://github.com/jeromeetienne/jquery-qrcode
1 r3 R% F. _9 q5 R1 d) n$ g" q- r& {$ b/ c+ T a$ G' f
jquery_create.php' j& p& L& a) P. }6 Q% D
( Z; F; p1 l i
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
4 K5 {9 X0 p1 ?. p6 o三、PHP识别二维码
3 u7 \ x- x; u2 p, r C1、方法一/ Z6 i0 U! O* ~+ k e7 h
环境需求,安装如下扩展
9 O* Y7 `; M$ J) z2 ?- ImageMagick
- s0 y5 J$ ]9 E, ~3 v$ t2 X- zbar$ O9 [$ a3 Y/ K' O3 o+ q* t3 O! W+ ]
- php-zbarcode- z! l: \3 i# |% p
4 G7 _) M- I5 {# |+ t, X2、方法二) o+ y2 m5 u- d% Q7 B" H( ^6 u# z
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以8 q4 Z5 ^- J; Q& i% S
qrReader类:https://github.com/baagee/php_QrReader
+ H5 j- w& ?( A; c2 a1 z0 L! H: c- F( @& k) ~! h7 V6 ~& p( T# a
, k7 B: Y5 [0 {9 j5 R- $qrcode = new QrReader('./test_logo.png'); //图片路径
+ x/ N2 X9 \/ ^( L' R8 t7 r7 {% K3 _
+ I, I6 g, L& l2 H5 E0 z6 }2 }9 o! y- $text = $qrcode->text(); //返回识别后的文本
- K8 ~4 J/ m4 ]: ^* t; L7 a - ; ?; z2 J- k7 t; E$ }! r4 `6 N, P
- echo $text;
+ E2 H5 w5 S6 Y4 `0 | - 1 j/ p8 L# y8 R& O0 ]9 s( V
- ) h2 K9 s. }: |! h, }
复制代码 1 x7 _( }. p. q8 C L
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y73 t! z% Y& F) D$ b/ ~' V/ f' z
2 M3 D- i$ P7 Q: k5 T
% t& ~+ S! u9 ?/ w+ {* x& V! Z& W+ d$ l; y$ A' L3 [8 K* P
0 m: B+ V/ D" L V% w! x$ O% {1 C$ H x# p0 O) d) k
( k, }" s$ m+ k- Y2 Z4 H: K2 P; \; R8 n! a3 R9 C+ @, o
$ E0 A' a3 O8 {3 p$ ^- F
7 k/ [* \2 y l/ x! p |
|