管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。5 g3 { w$ r( ]4 r# t! W) |
---------------------------------------------------------------------------------------------------
. N5 ~) y4 y/ c1 F8 b9 I7 J& E二维码的分类
% M+ `" }( [! L) K" D线性堆叠式二维码
# }: W: x6 `1 Y/ E$ h. I
G1 j6 N1 V/ S; e0 l矩阵式二维码! }; X2 ^$ l) c: L
1 X6 d( i! g |* H$ O二维码的优缺点$ M j: ]9 ^; x$ X; O9 ]5 v
优点4 ~' L9 g0 G) d7 y
信息容量大
$ L3 L# n$ _% s; C! J8 }: p X' G
' f& O3 R. w0 S/ ~1 h" y0 X4 Z编码范围广# U8 D4 C! t+ [$ s# S
$ W! A* F* V8 _3 ?! n1 b容错能力强8 g$ i( x) t& q) H7 q
$ u0 @* F2 X% \& i9 G" L+ q* Z
译码可靠性高
& Z( y9 T6 v2 y/ D' P3 Q4 I* X& m3 z# A3 I8 ]
可引入加密措施
" W# O2 v5 i5 k9 d0 Y4 D9 w+ B7 p8 @# d/ V# o! A
成本低,易制作
5 i" z( {0 `1 E3 ]) M, m! C8 y8 n, F3 W/ _' e( f3 Q
缺点 E) G4 o& x/ t0 I( V7 R& v( B
二维码技术成为手机病毒、钓鱼网站传播的新渠道
4 Z# h4 ]5 ]7 H9 z: T% Y7 B8 R2 T6 V# S, V+ \4 z
信息泄密
7 x7 R) v8 Y4 |! D0 C! A& z2 d# B6 R& _8 z6 Z4 C/ M
目前流行的三大国际标准
4 l7 d$ b& h v. g# u/ m3 ZPDF417:不支持中文$ b/ s5 e) p& u; y! _3 t& s
- z' l& |/ d2 P7 U1 G
DM:专利未公开,需支付专利费用
. {" t) P) l& ?
: G& k3 I; w) b0 l' b( r* ~QR CODE:专利公开,支持中文
: x7 l& j1 A; y" j5 E9 v& V
# _! C5 A. L G! g/ |% a* V+ X6 yQR CODE 纠错能力4 n( r( W: |5 _6 ~. Y5 |
L级:约可纠错7%的数据码字
! |9 I5 c: B+ C# A7 Y; M# C( l
7 ^/ [& r& a: k) v6 h- }# GM级:约可纠错15%的数据码字
+ H) G: N0 H1 B/ G3 x4 c" R) H7 u' W1 X1 {) y% ?/ V- e
Q级:约可纠错25%的数据码字
: m; O/ X R7 e2 D% M; |& ^/ x* p# B0 |% U; i3 O# ^
H级:约可纠错30%的数据码字) |, |' e9 @2 V
" t/ B: y' `% X# L" _
前提条件# u+ P/ n* Q6 G- L, ]' ~1 D# d
GD库4 F' p1 p. w0 ^+ W
2 E7 i4 x5 D) L% m- T
一、PHP生成QR CODE1 v0 o8 }# u3 d7 Q: n2 ^4 b
官网:http://phpqrcode.sourceforge.net/
% z M* [7 u# @) J2 j n8 z* c, z
下载源码:https://github.com/endroid/qr-code
1 e" C$ O- K6 K( n! h0 x
! J$ W1 t' Y6 V+ x目录结构" m) `: c% Q: }
' q5 n4 b0 ?- P9 O- i
3 v5 }+ g9 \7 B1 k& p
1、qrcode_create.php! y' X, A, C) e0 _ k
ps:生成普通二维码/ f) F2 I1 M$ n) G& e, {. h! H$ c
- & L8 \& G) ?+ Y% }) ~6 A1 x& @
- include_once "./qrcode/phpqrcode.php";/**( b. q% F8 Y. e4 o% e
- ' q! F( E. g* G+ J! M
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径% `/ p" f! X; t, `, [# z: }
5 w7 k2 G! g* _" y- D' U; Y( } j- * 在浏览器上直接生成一个二维码(内容为abc)
4 ]2 S) o5 x% U
/ |; R+ c1 k. n# N! D" c' c1 D/ j- */QRcode::png("abc");0 F0 H! k. r4 `& x, k! m$ C5 B* _
# k: X) {0 ~6 T: r7 }- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**5 k! K2 v+ U3 N' g5 i& e& j. S& g
1 c3 w6 z* L6 y. V- * 生成文件到本地: j' ^6 D+ {# i& `9 L1 K) E
, S; Z( ?% b1 j- ^- G- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
( ?: R' @* u- b2 f: |7 y+ p
3 Q8 m. { J1 F! k; x) @+ M2 F8 z- * PS:$saveandprint源码的p6参数做了修改0 r* s4 B, C( \- @
) z6 Y+ W6 R# w- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
- k& |7 @6 D8 ]6 v/ d
6 Q; `% C6 e* }. @+ m- Y
) h7 t8 y& k7 @3 Y4 A. c
复制代码 ' R9 z+ Y+ h' i. T" ?( B: }: _ c4 N
2、qrcode_logo.php/ g% ?3 X' y) U* ^
ps:生成带Logo的二维码
, v/ u2 s- @ w }) a7 r- /**
( _6 u; h: W* e E& @
& S. @7 U+ g* z+ o7 S- * Created by PhpStorm.& N2 |) `5 E8 \# x; |- c! B5 [6 s) `: ^4 C
) O6 K3 Y' r9 e, @- * User: user
7 h6 V: h) T4 `2 X1 r( [8 q
6 z* \( A. l& [$ g+ D- * Date: 2018/8/16# e* a. W! _9 V1 ~9 q9 B% ^4 ]
: w3 `, Y' @1 n3 g! k5 c1 e- * Time: 10:43% n0 @% _ r6 K9 P$ I" F- G
7 U1 S2 K' h o- */include "./qrcode/phpqrcode.php";$txt = "测试内容";1 X" I( x) d' P1 R3 c1 l
- : o+ H( H* }- m/ H7 I/ D/ q
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称& ?3 f- {1 m8 O
) t$ O) ]# @' w1 C# {8 J8 k Y- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是$ g. N8 H5 @6 c7 Z
$ ^ Z Q. R o6 N: t* N& R- $margin = 2;//边距
/ T5 h- ^" W' m. j5 Y - + B* W! f: P! B, J% M+ y5 D
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片7 s7 E; E. e+ g8 ?7 t2 i, O
3 T( U5 I6 P& [- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ ; u% v+ }1 I# s( m+ a+ ?7 N# U- M
" E" p" P/ o/ M- $QR = $picPathAndName; //已经生成的原始二维码图
1 G2 k5 |7 x7 L - / w" q W" n8 s1 k' |
- $Logo = './pic/logo.png';
: N/ V# H( i. B* B+ V1 y' h. a
f/ |) f3 i, O# ~ U' i! o- $Logo_re = './pic/test_logo.png';
0 }4 N" m! g' Q0 r& w. {0 e4 x - 4 D4 V2 b) Y* Z' S* m" {
- $QR = imagecreatefromstring(file_get_contents($QR)); 4 A7 \; l; m$ i9 u" \7 Y* l2 V' V& ^
- ) x- T) Y' m% A0 g, L$ I9 c
- $Logo = imagecreatefromstring(file_get_contents($Logo)); " a9 ?& q3 l3 }8 P2 f
- % c L; W+ z' T! U0 C. X8 `: F
- $QR_width = imagesx($QR); //二维码图片宽度
, I/ Y& C6 j: q: @# F5 \
$ ~* [2 a! w7 o- $QR_height = imagesy($QR); //二维码图片高度$ A3 t; e& F" v
4 R$ L; U! [4 R- $logo_width = imagesx($Logo); //logo图片宽度/ O, ] S D8 n/ U* G+ s' r1 x
4 ^3 S1 Q6 t1 {, V9 d- $logo_height = imagesy($Logo); //logo图片高度
1 a/ |) Z1 W! [, S/ I" A1 @( p - 0 q7 `* T" t. D# k: n
- $logo_qr_width = $QR_width / 5;
4 I6 Y: Y. E; v8 X! F3 M
$ `2 {0 g7 |( m7 n2 L+ Q7 y- $scale = $logo_width / $logo_qr_width;
# F. r1 ~# {9 f7 }( Q- f - % A' l4 i6 r0 a( `
- $logo_qr_height = $logo_height / $scale;
- J4 f, z( z; r$ ], g* t% l
5 t0 p i" r$ O" J8 c% {- $from_width = ($QR_width - $logo_qr_width) / 2;
% q8 _! P8 E; P4 t& i0 @
- g1 c; N: \! _, H9 y+ m% a- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); c2 g3 r1 e$ c9 }
7 n @& ` U6 i- //输出图片, X$ V5 V6 s" R
- % |3 }% D% b* a( d/ \
- imagepng($QR, $Logo_re);2 n) d% G! S* o" k/ N: z: Q) o
) ], E; c7 S# ~: p4 L- }
% ]& A ?% [, d; P& T/ }
' k' b5 Q8 \ q) A
2 B0 Y8 L2 O4 P- d& w: b" g
复制代码 3、qrcode_vcard.php (生成电子签名)
( d( W' q0 S4 r+ T, b8 }/ T! v5 c: o( w+ U
vCard格式:https://zh.wikipedia.org/wiki/VCard( k# z/ Y( z3 v( W) ?
+ k. l# K8 l8 R$ y% A- * K: Y- {( Y: ?2 i6 y- D4 p
- * Created by PhpStorm.
3 Y* b0 |$ `$ r$ }. a9 U
. _- u. U! M$ G; F3 [: o- * User: user. h: Z1 X1 c+ g5 X
- , h7 j( S) q4 P1 k
- * Date: 2018/8/15) U1 Y3 V% k0 ? k3 s8 P
- 3 s1 G5 W0 d) F% m- @2 L6 C- r8 J
- * Time: 23:00
, Q6 @: c+ Y5 O5 v [0 ?7 _ - 8 R3 n9 \( g+ Y9 a3 T( _4 ~) g! w" t
- */require_once "./qrcode/phpqrcode.php";/**1 y: r7 F' E) a5 r6 o+ E/ k+ g
+ Q3 d2 \' @! v* f5 a$ x5 w, `- * 生成电子签名
" v7 [+ y% r8 p. g. L
5 b+ Z1 k. N2 R- * PS;使用微信扫描二维码
2 N% G$ B: U7 @! j5 X m - * x' C0 P; v e3 G8 G9 U7 C. Z
- */$content = 'BEGIN:VCARD' . "\n";//起始标志
3 _$ D" I. S6 A" F- o - / K$ f- e& Q3 [% Y1 C- C1 t
- $content .= 'VERSION:2.1' . "\n";//当前版本0 _; y( S. s0 F$ \5 {, O* [
- 3 a6 e. F( g% ?. f) `9 R; ^8 U$ A
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名) g+ W& |( p) @
' O& B$ ~- L0 D2 ~0 l2 x1 l! f- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称- g# C$ i) O- u$ ?0 s" U3 F$ ~8 F
- L2 Y% w+ A+ ~- X/ ?" }% y1 P
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
, S& L9 e' [7 y2 U5 m' a
3 |: r- u# @8 M8 ~; D: L$ [- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
- b3 O( r0 ]9 L" [
) N ]. H, O* s) m3 l: N. }4 \- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址2 N" l! H( ?3 A1 T9 U+ n0 w
3 v6 N, s# Y* s- X! I' _( a9 p8 b- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)+ f, \7 l- L, {, u
- % L, c- V, _( ]0 \& l5 ^
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
* N, ^% x1 Y- {$ e6 x
/ D+ l6 ^# r |2 M2 u% F- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱0 l x& _" b: c
- O5 |; o9 H% @- $content .= 'URL:www.baidu.com' . "\n";//个人主页* j+ f% f& n0 h3 G
3 f0 F( a5 W8 n7 o- $content .= 'END:VCARD' . "\n";//结束标志
5 I$ F& D# j* V* e5 M% D* l4 Q3 [
8 Y+ G/ h5 a. ^$ r3 A* l. `) o- QRcode::png($content);. |, z6 N9 v7 g( L/ R$ c. T: }: C
- 7 H" e: a+ k& o9 G, g6 W5 V6 m
/ n* V- A- Z8 z& H. j2 ]
复制代码 6 ~5 \# z$ n$ \
相关文章推荐:! M* @1 ~% e+ Q' ]! L
1.PHP生成微信二维码实例+ Y+ L; O' C) m' e, Z! F; S
2.php网址转换生成二维码
' Q5 C5 T! s- ]; p. x4 [& S9 p相关视频推荐:# K8 {! p2 @* H
1.独孤九贱(4)_PHP视频教程6 H# \8 n1 [2 p0 W2 o5 b9 t7 u7 q
二、JQUERY生成QR CODE3 x$ j0 b- b6 b @6 l
源码地址:https://github.com/jeromeetienne/jquery-qrcode
T; r" o2 @0 H" g) ~9 ]; i' G6 R+ _; i- x9 I4 ~
jquery_create.php
& y/ L" q7 r* c. O1 t5 N' k
) @4 i7 }; P6 E, L- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
; w$ E% K; c8 ~三、PHP识别二维码
( p# f# |1 `6 z0 j2 R! i& W1、方法一
7 s1 o, _/ C' v9 y- K环境需求,安装如下扩展
+ I( M- R E- R8 C! E$ [8 B% _- ImageMagick+ K5 e+ q0 ~- v8 q
- zbar
- } Q" i( \9 o6 h! d: f4 Q7 j- php-zbarcode1 @9 _- s! U% @" P
: }1 x/ [3 @2 y d1 j' N2、方法二
- M2 G' S* t* I$ IPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以5 D3 O" g& r- U9 k1 C0 W
qrReader类:https://github.com/baagee/php_QrReader
! P e( G8 b/ w3 ?3 L! L' x* h4 ?) L! W* F8 E
- ; O+ {6 t4 x7 Q) ]6 V
- $qrcode = new QrReader('./test_logo.png'); //图片路径/ X# v9 P$ J7 S8 P& v
+ l; ~ m( ^# S' R5 }: i& ?. S/ R9 L( S- $text = $qrcode->text(); //返回识别后的文本7 K& I @ L& O, t) c r
0 A3 ^9 q B2 y5 s/ E3 z3 m- echo $text;& d, a! m5 z9 C1 X4 p# q
3 Y; I: N4 T" ]. d+ i8 |1 I, P
. }$ S Z: \% g
复制代码 * [' Y+ {: Y/ N6 Y; G- p
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y72 y$ d1 |( x8 x
1 _' J/ ]5 s8 q1 `: \' `. q
5 U. Z+ `9 c: ^. a% Z1 D" P# ^9 W- H5 K
% s0 S4 m9 p( m. C$ ^" Z- h' _
) h$ B2 L" {5 G8 w2 ?9 u
: ~; x, E5 v5 e3 c$ n! G; v. O, J* l# F$ H6 z/ w$ \5 ~! A
7 c& k* X; u/ W4 h/ q% A: {
4 E4 O' R/ r7 T |
|