管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。4 H3 v* {9 `+ o3 z P8 O
---------------------------------------------------------------------------------------------------8 J2 _# F' s% c2 ^! U4 a
二维码的分类
. T% |9 r/ v" M7 w, W' D+ ?线性堆叠式二维码$ V$ W9 j" X* A5 C9 }
5 B# w( y: g. b6 D" `矩阵式二维码
2 O; A- |7 m7 x2 y+ c6 z5 j$ E9 `" L* F* \' @5 v5 n) }5 S
二维码的优缺点' D9 G6 w p1 a
优点
' K: X: b( _- U/ f; S3 c信息容量大* ]/ R# W: T; L4 p& x- ?
; S+ m2 J Y& A' i编码范围广
, r) {9 [. B2 ]+ n$ |6 [/ P% P
8 U' h5 i7 U& k1 u; D容错能力强6 s- q0 i1 H( N, _8 v
9 i' W# }" L: e: P- R( L, k译码可靠性高
: l: @$ f! ^. |* |+ \* N8 v( a' E7 ~0 M/ M6 I# m( A/ ^ A
可引入加密措施
. m. B# N& |8 h0 I1 T b5 ], {
! S6 l0 T. w( F, n7 Z% f* \% G R成本低,易制作; f3 i6 V" h$ n* u9 B2 Y8 D
& G$ [# m# ]+ P9 C( H缺点
5 ^9 ], S h" S: S3 d3 _二维码技术成为手机病毒、钓鱼网站传播的新渠道
% }3 s1 k. L0 V' h E, o7 I. ]- ?% _$ c. [
信息泄密
$ c4 e# w; j* @, Z Z. z2 l) E
" O* _3 F5 V& h) X目前流行的三大国际标准
- [1 t; ^ i2 Q! Y! e4 s. K% ?PDF417:不支持中文$ t# z% q; F' _) {5 i! b
- D1 W, u1 c* ODM:专利未公开,需支付专利费用
" v/ o- f/ \( } F0 i! q! M/ E
& P. B( Y0 v8 p9 EQR CODE:专利公开,支持中文6 {0 K8 E6 D$ K& r6 A. d
+ @6 z& _2 U8 b3 k/ B& d
QR CODE 纠错能力" @+ t0 z5 W* V- }) @
L级:约可纠错7%的数据码字
% o9 F/ M/ ~' w$ x' f( ~/ r2 g1 D/ W& I/ f# g
M级:约可纠错15%的数据码字0 O2 ?: K/ y8 T5 V# ]
$ V, A1 e% k5 c+ OQ级:约可纠错25%的数据码字9 T$ c* X- t/ B! ?- q
; l3 e9 F; r# k: cH级:约可纠错30%的数据码字
o+ d8 ^# i7 i. m6 e
, p, n. R2 j' p4 _5 ]前提条件
( c' o7 S9 ]0 r8 S( FGD库
% w7 v+ ?9 s3 J$ z# U& ]
* r5 ~4 l9 F) _, y2 m) L3 l一、PHP生成QR CODE5 f y9 s+ O6 J8 E
官网:http://phpqrcode.sourceforge.net/
3 h' y3 @3 j0 e. i$ \* ], w0 s. v/ @% @) A7 }
下载源码:https://github.com/endroid/qr-code' r7 }* }* H7 ]6 R4 r- ^- L
$ ?1 A; n; d& l. J
目录结构
, I, z9 h& x( J& Q
- p# v3 r5 ?/ D: g7 H2 W; c/ Z3 H
0 u9 u. k4 ]0 G$ [1 c6 i9 T
1、qrcode_create.php
# r0 i! L* U) X6 S5 Y1 J$ _% R, |3 ups:生成普通二维码% [3 O# _4 S$ {( H
$ ?' A- B+ r* {- include_once "./qrcode/phpqrcode.php";/**. s( @: Q/ p( |& H3 P) }
4 C6 B2 _# \6 Z, x1 w4 m& R& Q- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
1 p* n8 m z4 o* g+ M - 6 J/ @4 Z) M" T* U4 g
- * 在浏览器上直接生成一个二维码(内容为abc)
]" }- v) V n% k4 L - , S* s& q4 d4 @ v6 }: N- k
- */QRcode::png("abc");& }3 Q! g! H% @7 i- `0 g
- % }9 s, c; v. @% ]8 K' c5 M/ X
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**0 N+ k4 M8 J8 _$ d) m
- 9 c l! O/ F! U
- * 生成文件到本地
* Z! ~1 f4 m/ Y5 i ]+ J- W - 2 |( n. @# e1 v4 t( k
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
* m% _# h: J' J% N
4 \6 `2 ~; \- T+ ?5 | l- * PS:$saveandprint源码的p6参数做了修改2 ]& K+ f) w3 P) G5 Q( C- v
- ( C2 }$ g7 V# k# `/ y
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);' ~' d% l0 D) y; k! Q! _ x8 J& b2 K
3 O( l7 J/ E, S6 K0 ^- P3 p5 c+ g: o9 V* I
复制代码
6 I9 i3 }) M' ^6 n% H9 R1 A2、qrcode_logo.php
. V6 f# ^' [- N2 ]+ X4 ?ps:生成带Logo的二维码- " @, p$ S) D+ S. e J2 L, n& l
- /**; ` d* D9 ~: q& J/ W
/ Q `; H! j8 H( ]8 W- * Created by PhpStorm.' ] G% Y, H* l1 N" d
8 J! _8 O3 X' D k2 Z2 j8 d- * User: user5 f/ i' |) @. r. G' i
- 5 N' b& N8 A# |* j8 ~
- * Date: 2018/8/16
& \6 x' w, g- q5 @/ B* V
1 d4 ~+ m) V, I% I( x4 t- * Time: 10:43
3 a3 x2 q$ [6 S8 d - ( W9 b4 h8 X! l) O
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";' N; f, N1 w( q/ {+ t5 I
q1 @2 N8 P7 E/ D- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
4 w4 Y6 E& ]( ~$ T
6 y, q5 T6 T2 Z" h7 p- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
* Q% \) @3 E% T$ e# Q( ^/ g' Z
' a V; R, p9 j& ~) A4 C" n' s- $margin = 2;//边距) w# {. i. x& {! M: U8 N5 U
% T* ~' I# w* G2 y- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片$ b8 R% D7 h6 X5 y
- , X' r5 b7 Y* A6 Y# _
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
+ h" n) k# e" l
, h4 w% n% @* D" y o2 a! P/ K- $QR = $picPathAndName; //已经生成的原始二维码图
; |/ F1 G3 u0 g- y0 B0 s3 y
: C2 {+ j1 S# a% ~* j- $Logo = './pic/logo.png'; . h5 a1 S/ B9 {
) e% k9 }( X6 I2 ?9 D& S& z. Q- $Logo_re = './pic/test_logo.png'; ' q3 ?# n! ^& x# a
- 2 E% B1 D1 D( a: Y/ k0 s
- $QR = imagecreatefromstring(file_get_contents($QR)); , F$ H# @" o# k- Z& Q% }
6 {( L, _ T( }9 S- $Logo = imagecreatefromstring(file_get_contents($Logo)); 4 n$ a/ P! N" t' s) j9 h. }& ~9 i
- $ J, I8 a% v! ]4 v& I8 r
- $QR_width = imagesx($QR); //二维码图片宽度0 N/ |$ `$ p% M
: Q% F7 R' l* F1 w0 M7 h! X1 R- $QR_height = imagesy($QR); //二维码图片高度
* |$ F7 V* r4 l& C
! }( G+ B% k( c- }9 U. F- $logo_width = imagesx($Logo); //logo图片宽度" g( x: m: E7 L% r I1 l/ K K
- , |; m5 |+ i' G- g4 r1 D% L
- $logo_height = imagesy($Logo); //logo图片高度. v0 H4 R4 ~5 F* A, i. W L w
- 9 J9 L* ^' {5 l5 }, F# Z! D
- $logo_qr_width = $QR_width / 5; - ~1 y' u q: N6 j& o
, d I6 }8 `, r. Z- $scale = $logo_width / $logo_qr_width; , p; x6 U. x9 Q X2 p
( y1 ~5 r% K" V. c" F! W- $logo_qr_height = $logo_height / $scale;
0 f) M7 x5 J# }) S
# A }& C, I- }! n- $from_width = ($QR_width - $logo_qr_width) / 2;
7 G3 o2 p! e# R! L
7 R- E( l# L: G# U: c2 @- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
3 h% y" l) F7 X
H" X$ ?) C" t7 u: Q! X- //输出图片
1 R2 v# w$ @! d! Y0 p
) m( Z+ ]' [# R' |( { O- imagepng($QR, $Logo_re);' B. X: d5 B( l# t' ~0 w% u$ J, I
- 2 _; X! ^* s6 m4 [8 u2 J% E
- }1 `! Q5 v" O: A3 {1 x
- 6 \. g! x0 J) O5 _, q' B& P
- ' L/ D% V& ?9 s) @8 T
复制代码 3、qrcode_vcard.php (生成电子签名)
f# `9 M& t' V% o. N& b7 |
# K; x* V/ h% B: A* s2 svCard格式:https://zh.wikipedia.org/wiki/VCard
/ S/ H8 I- e* n& Y; P. p! h. ]9 u! R4 o2 ? e. Q2 B1 h
: I9 W4 G3 N" P/ @0 D' Y" [4 ^- * Created by PhpStorm.
5 c- f' T" _) F - ) |2 K) f/ E0 e# Z- E% w% i7 R; z6 z5 ~$ y5 W
- * User: user9 Y- L, X5 \1 c
- ; ~' E- U; a) \% g& g$ o( F
- * Date: 2018/8/15
( [& x+ G+ I& _% ?- U
1 @( K, o1 g' `) K- * Time: 23:00
8 M! u, Y, W# J2 j8 R" j- P - ! e6 N$ i7 ]5 C
- */require_once "./qrcode/phpqrcode.php";/**- s% U6 `! p) b& J. a" u
- ( Q3 _/ @( |# o9 v1 T( r
- * 生成电子签名
8 Y7 a# t8 n: x7 J - & u& q2 A, ^. o- ~
- * PS;使用微信扫描二维码
: y$ D5 _$ U/ {3 b8 } - 4 b! J0 P1 Y1 J, _
- */$content = 'BEGIN:VCARD' . "\n";//起始标志- l5 o) F" r" K- [4 ^, b/ E3 Y
- . d- Z/ G$ g2 G
- $content .= 'VERSION:2.1' . "\n";//当前版本
" ^7 R, P y4 z. ]% ^( O - ! ]2 ~& ]' b; j( F3 j1 q9 N
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名. L% Y! ~" `& L; T3 Z8 T5 F
$ t- s8 s* @' B8 s- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
* O' C# |) C) N$ S) m - # K# |- v* `! }
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位- Z) \3 w4 f6 V, M) f; a0 U* k& @! d
- / `2 i! @2 H) l6 U
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
5 ?) c6 N9 y9 s/ x0 o
7 x4 k6 A9 C9 g& J; Y4 u& o' N- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址9 C& ]5 K& M' m4 I: z. G
* B/ \) n _, Y/ W' U5 T- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
9 b t" T( e t6 u' ~! _
$ k7 R9 t8 g6 y5 }. s8 J8 L2 {: ?- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话7 N/ f. f# |/ E1 q8 D4 { \9 d, b; |
N& z6 C' ]: R7 k3 K- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱8 X6 a9 C* u8 l0 o% E X) l$ }5 N0 s
/ l8 H: b8 N8 U- $content .= 'URL:www.baidu.com' . "\n";//个人主页- e8 q8 b* I& ]7 P3 v( n, \' ? ]4 m
- & j. x. o# \6 O; S6 l0 ?4 E
- $content .= 'END:VCARD' . "\n";//结束标志1 r: i3 C$ V' l9 d4 I
- ' J6 S- {* x+ C# y* w* Y" U5 t/ r
- QRcode::png($content);
2 v& A! |& [: M4 i - 7 f" _! j9 Z% H9 h8 t+ t+ |
, U. P$ v4 j$ ]7 G6 \
复制代码 . Y$ b3 \, s* n, N" _
相关文章推荐:' c" P6 b! x" t3 |
1.PHP生成微信二维码实例
' {" n/ B: o( F; k2.php网址转换生成二维码 d5 N. z" n2 L
相关视频推荐:
1 S- C8 F8 I/ d3 s4 \# f; T1.独孤九贱(4)_PHP视频教程
. s1 [1 j7 Y; t8 a7 Y! |: `0 j& q6 m二、JQUERY生成QR CODE
" G% a$ F8 L& _5 M8 J7 n* e- H源码地址:https://github.com/jeromeetienne/jquery-qrcode
' c% ^/ S( {4 F! e7 e9 N$ ?# b9 N+ g; J: S
jquery_create.php4 K' s+ \9 T$ t* F) N9 _. M
/ m2 u9 q) l+ q& g9 E, t
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
7 R# R" N$ R! X b5 K三、PHP识别二维码 ?! ~ ~6 h, E' @6 Y7 H
1、方法一& O* c# ~0 [4 U! w" m( U" p) o. d
环境需求,安装如下扩展) y0 i! C7 K3 F; \/ a
- ImageMagick( f5 _; |0 D9 ]) [( b
- zbar! _& _& |2 Y' Z
- php-zbarcode" R9 h: ?0 `- A) C4 C
* b' C$ n+ O) ~2、方法二
& |9 x# x# N [$ i+ ~PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
1 c# [" ~) N7 l9 \1 w, dqrReader类:https://github.com/baagee/php_QrReader' H; `; s- m6 t- m/ O
9 x$ C% w6 d& F* J9 u- . i5 K; o; |6 C
- $qrcode = new QrReader('./test_logo.png'); //图片路径. ?: ], v! V) [" |$ x
0 U+ g, I! @' C' S* L* N- $text = $qrcode->text(); //返回识别后的文本
, D. F* r0 M! P7 j4 X& i& |# b" G - # t, T: G2 h4 O y8 K
- echo $text;( d& D3 @, ]7 g" r2 H- y* m( M8 u
: J- A1 _; O- u- : Y6 g5 r! a2 I: t' ?
复制代码 " X: n) o( e$ n
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
9 c$ t: h! o A1 n+ R9 `. R& V8 |0 l4 N5 ^
) x4 J! j2 e& V% O" ]
! t% E3 J/ e0 v) e9 A3 t
( X: Z- u* z+ ?# T5 a& d# o
% {& w' e* j; M8 n) D2 L# s
3 F8 N) y# e- o0 z( F7 A
0 R- Y8 \( V9 \' T% S, }4 r
7 p$ u: e2 k, X+ G0 @- y; Z( Q1 ~5 ?/ J7 ^* t
|
|