管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
" {& g7 c2 ~/ n- z- {. _---------------------------------------------------------------------------------------------------
9 z8 u( H$ j1 e; e4 `+ v {二维码的分类
( W" x6 }/ b% A+ L9 d线性堆叠式二维码$ y' P2 [% `' d3 `
6 N4 n% _, ?) C' o" j9 o* F矩阵式二维码
8 T0 {1 x& A5 W. S8 r; i+ Z0 N% i/ U: \# @) U% d# S1 u
二维码的优缺点; t b+ V: A# Y! |# v7 m
优点1 _9 @3 E/ K0 J5 F8 t
信息容量大
. e9 H+ U" Q) J% r( i2 u, k' q9 F
编码范围广* b. m/ Y5 }+ `$ b4 z( [/ s, D
" {5 Q( m' |7 k# k. Z4 S6 s容错能力强' J* p. D$ I5 [4 T
4 S5 l5 c( R A6 x, J
译码可靠性高
% A$ K1 I7 D- K# ~) f8 V9 ^) K' L- E
可引入加密措施
/ R, A+ H7 L+ I& n* L2 n! L6 j% }+ x. O9 k: Q
成本低,易制作3 g$ J; O6 `- w4 T
9 P" }7 P3 ?. D* {缺点! b& U. K2 h8 d+ {3 |
二维码技术成为手机病毒、钓鱼网站传播的新渠道* {) z) B8 E3 k- U+ u8 N1 Z( Y
; ]) w& g+ m, o
信息泄密
" r q' I/ `: C! r8 p( V; t9 t$ Y6 o, E# O1 n. I6 m
目前流行的三大国际标准
0 x$ R# P2 x. T8 @1 {) X) g) i( DPDF417:不支持中文
- W0 V, @: c4 }' u7 v/ _4 {- u8 X! Y+ t/ l$ J: H+ r
DM:专利未公开,需支付专利费用3 E! E) _1 o+ q7 n2 O r7 f
; x2 e8 ^3 f. S3 b! N8 |
QR CODE:专利公开,支持中文
# q" V. `: u% s" p& u3 I
* A0 h) k0 [" d g8 VQR CODE 纠错能力
( `, M6 ^0 B* }; S6 I/ t1 w2 x. @) W+ PL级:约可纠错7%的数据码字
6 h5 K/ g; p: S% ~7 d& e7 F/ D- G) a( e
M级:约可纠错15%的数据码字/ @, W* I6 {! A
: p% ]. v+ N0 }- T7 `
Q级:约可纠错25%的数据码字5 ^( D! N5 U3 B) c8 |) g% O
' \' q# |$ i+ S' t) J- E" A5 KH级:约可纠错30%的数据码字
( I& g) B* s. a" }9 X4 q4 z1 w3 z: z- Q4 Z1 X
前提条件
7 a! ~4 _; \4 d5 @GD库. t5 G+ X- x3 h5 q
+ ^( g: A- Q9 i, y3 {* @
一、PHP生成QR CODE
8 z! M3 k j3 `+ i官网:http://phpqrcode.sourceforge.net/! a' N. g5 U/ p! w" R- F& X: N
; `$ @7 g# X5 h5 A
下载源码:https://github.com/endroid/qr-code, G: w2 s* X/ [' z4 w# m* u
+ c f4 x9 e% w0 ? o7 Z; P" i
目录结构
& g, h! F ~7 P
3 t+ R: }# Y& H+ `! A
( ]$ b L4 M" w4 Z8 T
1、qrcode_create.php
2 H$ `, Q2 z( m; K: Z( Hps:生成普通二维码
/ @6 V. ~0 W$ M' J- c3 c! W0 C& `; g4 F& S/ B4 [
- include_once "./qrcode/phpqrcode.php";/**
! K3 |5 G9 d( K+ \6 D - 3 A4 a) D! m2 Z$ V0 A( Y; n4 u# N
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径- ^+ e9 C- w8 k! N( \) F4 N
- 2 M O) z ]: x! V
- * 在浏览器上直接生成一个二维码(内容为abc)
# U2 m4 e$ c; I0 r
2 c- j( Y: \8 ] J0 j- */QRcode::png("abc");
' u$ Y+ h& s% f) M4 b) q
( u, [7 B8 c: H8 D6 O5 b* D- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
- a. |: }1 i' m2 m - & T: x2 }: v! O3 `( m% B
- * 生成文件到本地' a/ A5 l5 i, _. S! m( X
- 6 Q, E# U2 r) _
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)6 j$ E! D" W% \/ V9 y7 D+ K& m* q
5 E/ q* d' I, B1 `- * PS:$saveandprint源码的p6参数做了修改
! t( B! b! ^ F. D" {$ _0 \ - ; n) I/ A& f# b! V5 P2 N6 R# Y
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
( ^/ d W* H/ P& ]* ?7 ~
$ I$ k2 \/ \" { M2 Y9 i! ]+ F/ k
% d! m5 p$ y1 B$ e5 Y: ~ u5 }
复制代码
& K( B& t" K& x: J- o) @6 G2、qrcode_logo.php
. s$ q$ [: I; l& B5 Q1 Y+ Wps:生成带Logo的二维码- - s! x& E+ f; n6 B1 q5 e
- /**
5 Y7 U9 b0 r9 r, A( q P
+ Y3 r/ b2 K" K, w0 C1 Y- * Created by PhpStorm.) }7 q! O% t- z7 B- |' a
! j" [' q- j$ B3 O- * User: user
8 L0 p* S8 u: Q+ m$ m
. }; O, k9 y4 W5 n# S6 n: ]- * Date: 2018/8/16( R& O0 |" z# F7 [* ^7 d8 C' b
' [5 ^8 ?" e4 D+ O# d/ [6 Y- * Time: 10:43
0 w8 w7 J' B: z" {/ P$ | - , w/ W' U8 w; l2 D ^& H1 u9 U
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";: E0 ?4 J; o8 v7 [" F8 K6 J
- 5 T6 {1 a( M' f0 Y! A2 {8 s) N, _4 y! j
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
, L$ T% P: ^ D4 U" ]9 q
" h0 W, v& n, _2 ]- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是' f2 g# w, J% v Y8 f
- 4 q% J R9 Q% r% s/ L
- $margin = 2;//边距! _; b. A1 o0 C
5 U. c0 c( ~/ r7 n6 ^- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片6 b9 y9 [: T, T- r) t" L
6 X# Q; U( `" ?& p- |" G2 d8 Z- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
1 Y; w* P; Z0 |$ `6 C
) V# `. ~7 m( P5 u7 y7 n: D- $QR = $picPathAndName; //已经生成的原始二维码图* ~: a3 l0 n$ t; Q6 _% O. M) G& {0 M
7 `% c8 {: K, |6 d9 Q% m- $Logo = './pic/logo.png';
2 N( B4 i" W( B+ `' y9 x0 y6 G/ Z
9 ?" k: i- _ d! D# G- $Logo_re = './pic/test_logo.png';
6 X; D- m. C/ Q - , |! ~7 |0 N% \' [0 m; Y
- $QR = imagecreatefromstring(file_get_contents($QR));
8 U5 q( e5 M) m' ?* } - 0 z" H! C7 M. S% S4 ?9 ^; s( t
- $Logo = imagecreatefromstring(file_get_contents($Logo));
/ ]. X$ X( [# a2 w5 b
7 w+ G1 G* q0 l+ \- $QR_width = imagesx($QR); //二维码图片宽度
6 d# ?: G- M5 G$ u2 `
+ L5 T, X$ `4 X& Q/ ^2 X- $QR_height = imagesy($QR); //二维码图片高度
# V1 g+ d3 b% z4 _ - ( Y v" k7 R& W- B" ~7 {! F0 a
- $logo_width = imagesx($Logo); //logo图片宽度 a4 ?2 _, {! W, x
- , X. X. _; q- Q# p
- $logo_height = imagesy($Logo); //logo图片高度- B) l- m* _# C4 B7 g+ B5 i% F
, f% S) p% z# p9 Z* I1 j- $logo_qr_width = $QR_width / 5;
+ B0 \' l- y. H$ j
& ~9 K% g' P2 M$ c8 o% u$ R- $scale = $logo_width / $logo_qr_width;
( q/ [1 A2 V% C5 D" J - 0 ?8 k" P0 E' w
- $logo_qr_height = $logo_height / $scale;
, h* p) E0 O( u3 s n+ P7 p4 r
6 ?. h+ |! U5 O; u: E2 d- $from_width = ($QR_width - $logo_qr_width) / 2;! D, V/ ?8 A2 A/ C7 F+ V+ h- q
- $ b' R# B+ S6 V. g% _
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
/ _3 S+ G5 O, G2 X3 p; P* m - ) w! g2 q; F p' d" g; r" y
- //输出图片9 O' W' A) U/ G* L
! j# @; u F1 I- imagepng($QR, $Logo_re);) v/ U# Z" j3 ~+ L) ?
- ' P: S, U8 Z, ?% {: N1 t
- }" J1 {( b8 T; H' `+ w1 i
' r3 x, P4 I9 Y8 L2 R( v6 G
+ h6 U. w$ D3 |4 H8 P6 b9 V
复制代码 3、qrcode_vcard.php (生成电子签名)
2 S9 j) ?) O- s. z
) u% D5 ? Y' |0 ]4 s! `" |vCard格式:https://zh.wikipedia.org/wiki/VCard& w9 x' V t! h( E0 F: [$ j/ K
# d |9 t: H2 C
- ; ~* ]0 W7 O- G! E0 D
- * Created by PhpStorm.
' q4 u& [* t5 v b% [) F! G
6 c! |/ }# R3 \ m9 K4 I+ A- * User: user, W* v+ f' P. S$ A% @
' D( R R- U2 o- * Date: 2018/8/15; A, Q' G0 g' Z4 C0 @
, s; h4 {3 v" u. ^1 I3 i( A+ F- * Time: 23:009 n+ W7 K `0 p, e3 U5 A, {) g a
- ! H* i" j A% ]5 `, k! g( I% D+ R
- */require_once "./qrcode/phpqrcode.php";/**: ~( }0 X# X4 w6 W5 w6 e& N) T
- 5 \! ^% g& _% X8 i
- * 生成电子签名
4 p) V5 D! x1 G2 k
$ d' G6 V% O' F- C1 ]2 N- * PS;使用微信扫描二维码. E B6 O4 c) V* M/ S" N2 g! L
7 T; v6 R( y# E) r# \5 r- */$content = 'BEGIN:VCARD' . "\n";//起始标志
: N) C/ b4 O7 B" |7 G3 _+ C - 3 Y6 K# q# z2 i4 X7 A% v* n
- $content .= 'VERSION:2.1' . "\n";//当前版本$ P& w/ w8 }$ [" E
{) i+ l& P' F5 h- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名7 }* p2 P; p# a E0 ^( J0 d5 {
' t/ J/ M8 |2 e. n3 t! l- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
6 E3 p1 Y8 }6 `' G( X; n( o; J - % Q% }" Y. S0 J0 g6 Z0 @( L4 Q% P
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位. w0 D+ P1 h1 h" i+ h$ f+ P
- & o1 _6 M, }% p8 W" P T% G
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
6 i/ X$ b e' c$ _
% q, F- V1 P x" a9 [8 b! N8 k- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
/ ?1 ]* O( N. _/ v9 W3 m - 3 a: N' |& B# p
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
) w( r7 g: M' ~
- t& l) v- j3 m+ a6 t& L' l- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话) y6 b4 A8 Z# x- _( \6 J9 E
- & V6 m# A, U$ ^9 V1 B8 b
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
8 J# _, ?1 r- u - 8 C- M" {- D8 Q$ G9 f3 R
- $content .= 'URL:www.baidu.com' . "\n";//个人主页
6 ~7 e% a- P8 |% _, Y4 |, _ - 6 R. e: Y4 R1 `3 N0 D% g( \& i2 t
- $content .= 'END:VCARD' . "\n";//结束标志
4 H5 W$ i; q" ?- U% W6 ^% m3 N - 4 J. R/ a0 W2 F' {7 i& Y& `! c3 e
- QRcode::png($content);
8 a9 b/ V7 D. [
( T$ e2 _' D7 x2 Q$ \" R; f- ; {+ K' p# e) ] Z
复制代码
- U2 m; P0 p4 `9 n+ k) A2 p相关文章推荐: j1 ^: u3 @6 `
1.PHP生成微信二维码实例! Q& f1 F( O, a7 ^
2.php网址转换生成二维码
! G$ ~+ n+ `" H- s7 t相关视频推荐:2 h1 Q5 [7 w o9 b
1.独孤九贱(4)_PHP视频教程
( S# t. T, R5 I: v: j) h( l二、JQUERY生成QR CODE, n, G9 w3 T. a+ S9 J& f
源码地址:https://github.com/jeromeetienne/jquery-qrcode
# ^* U, l, k/ K( @" |+ V1 X! y; V# ~! s/ _* K6 @" w- [$ E, C
jquery_create.php2 K8 r, K9 Y1 F5 s9 E/ v
* P2 S: z) q5 t; x1 m- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 / A" u" y: u% }$ @' b" t
三、PHP识别二维码5 K5 d! h5 b2 T# S1 F+ v
1、方法一5 o0 u |# g6 ]' L3 W6 r
环境需求,安装如下扩展# r) [. z. C, ? V7 c: |
- ImageMagick% q4 Y) S6 v+ L; Z. B( O2 {
- zbar
* ~: }0 m& m t* _/ z& j- php-zbarcode+ ]. B. ~$ A5 t* D Y# v
8 W% y- Y' z. S& @! y( z6 | t* }2、方法二5 V- R' ]4 y1 W' L
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以- @. L/ y8 l) ^( s) ~
qrReader类:https://github.com/baagee/php_QrReader
) x0 q. N3 u, C! @8 @, y
! W) F( e& v% _# q* ]/ A" p6 @- $ h% ~: n8 o" C5 O
- $qrcode = new QrReader('./test_logo.png'); //图片路径
- W; [+ b# Y5 e0 x4 f* }# H - 7 V& P7 h1 x. U! [
- $text = $qrcode->text(); //返回识别后的文本
' j& \! ^. @: z4 N
' g$ V2 z& U U7 ^- echo $text;
6 F- J0 H, h9 e/ E, @- K - . R3 B* M8 x$ j8 h$ `9 T# l
- , k$ o% n j- m8 g/ A- ~7 y
复制代码
( ]+ o3 S6 Z# R8 {" A! Q& v链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7+ i$ P1 L9 W4 \
! x! ]* E$ ^7 D. i( i) `7 |
& s4 O; j$ H5 E7 _6 K% W2 @
1 K" b" @# e, A' v2 K: g0 d. ~
8 _7 e9 m A4 ]& T2 o0 B
/ {9 b! ?3 m- P* }% D' [" V0 E
. j: d" H4 h8 Z. W+ u
$ x: \# F4 o' U6 C/ M6 P4 S1 ?) |1 N @ f7 v6 L3 l
) i2 h6 Q; d5 o# i1 t: B, `# ] |
|