管理员
![Rank: 64](template/yeei_dream1/css/yeei//star_level3.gif) ![Rank: 64](template/yeei_dream1/css/yeei//star_level3.gif) ![Rank: 64](template/yeei_dream1/css/yeei//star_level3.gif) ![Rank: 64](template/yeei_dream1/css/yeei//star_level3.gif)
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
$ Z0 M/ S9 f( _---------------------------------------------------------------------------------------------------
0 M0 w# N$ y$ l/ M% a二维码的分类
$ D. [! S; m" o; `$ t线性堆叠式二维码# \; U; ]* z- W! Q; }, n- r
h0 d$ r& A2 M t2 o0 J
矩阵式二维码* ?: k6 h9 |# [, Q
+ R; P" f5 e2 M, @二维码的优缺点$ L7 w& s5 G3 l1 \1 o d0 r1 l w
优点
/ Q. R$ U2 c$ S ~信息容量大6 l/ Y- u6 P$ Y. Q
$ X0 J& D3 O+ o( C, M- ?! J8 I1 Q编码范围广( k& Q6 y1 `* X- Y
! i* g% d+ ?- U$ R' w: k$ L0 b. D7 }
容错能力强
- ?( g! D; q! O3 E3 w! D
9 s3 ?# e. \# k( S译码可靠性高% O7 s+ e. K2 C, C
; p) }; I( u2 e# A
可引入加密措施
; T6 K- ~- U9 ]3 e" k/ H4 k: r7 w) k' p+ t! n$ U9 k3 \
成本低,易制作
I: G4 }, Y2 P7 s
/ q: V) N5 c) x9 u N8 x, L9 b缺点
% c" P, J* {6 p4 K- ]二维码技术成为手机病毒、钓鱼网站传播的新渠道2 F. O1 g9 X* v3 _. _; \" M/ N
! d# u5 g/ R% t% p0 e3 D
信息泄密
# ]9 `- K7 ]/ W& `/ ?" Z; t
) z( E, c9 E: B/ e目前流行的三大国际标准2 }: H8 ?( }) |6 z( z7 [. z
PDF417:不支持中文
G) |. C; d" X$ C, m9 t, k) d. R; |0 {; o
DM:专利未公开,需支付专利费用
l- j/ q6 m# `' }
2 ~7 H/ S: o" {7 qQR CODE:专利公开,支持中文9 k3 n. l- V8 d' n
, b/ f7 g, K- P" EQR CODE 纠错能力; E& y8 Z$ ~6 h7 s
L级:约可纠错7%的数据码字
+ f- U. I, V" a; ^$ `: a3 x. F
# ]* u, f1 d0 n) ? w1 r% t- JM级:约可纠错15%的数据码字
0 L3 z' E" [) h6 M2 {! h; I: d ~: s5 t( }
Q级:约可纠错25%的数据码字; M; X+ G1 m2 I5 ?1 @& {
. a& p9 W: C. O1 |
H级:约可纠错30%的数据码字9 e" U9 w: A6 o! g
" h& W Q' B" n, w( e前提条件9 F: e6 L$ L0 D, ?" |
GD库! ^$ H6 W3 P+ ]/ P/ W0 |5 I! K% @
k% _: j G4 O; ^; o( I
一、PHP生成QR CODE, G- {; u# ?2 e/ J* i" x
官网:http://phpqrcode.sourceforge.net/
3 Z0 W8 M: D3 A- X6 r
2 ~! l! I) ~# o4 |$ |+ r4 |下载源码:https://github.com/endroid/qr-code. [ R) f4 \' L6 S# S) ^+ z7 ?% C2 {
8 G' c8 y( }' @' F
目录结构
0 V, U r5 O9 b _, j3 x5 r
7 L# o: G# G- c6 s* J) C, }( H
1、qrcode_create.php
( J4 [9 ^2 E' r* W, W+ {4 Wps:生成普通二维码
5 |% W7 a/ U$ b P, _
7 p* M/ G5 k t; H. |- include_once "./qrcode/phpqrcode.php";/**
0 J% [- O% \2 m1 I0 ?2 Y
1 s4 ]- i- `8 u K- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
, n3 |( I+ Q' h) k - / e5 q3 p; R3 Q# m2 Y G& T0 T
- * 在浏览器上直接生成一个二维码(内容为abc)# F. o7 X5 Q) w3 s
- 4 h/ P. A$ L* ?0 Q, f) A
- */QRcode::png("abc");
/ S* n& G% c5 G" a# T2 _# t - , I, B @2 k! g
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
6 z- c8 v1 s: k5 G+ n
2 g; k8 P, }. \8 ], k3 M- * 生成文件到本地# n8 t: K, m8 H1 m( R
. i0 h6 L# _ [3 h* ^3 g% C- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
, h F2 o- O: Z. D- R( M! b: U - * F+ ^% C9 A+ T8 ?0 G2 ], W7 Q. L
- * PS:$saveandprint源码的p6参数做了修改
2 _3 s' h% v7 W7 e, p1 X s
2 V3 L3 E& ~& x" C0 Y- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);4 ?) M8 s+ \; |. R
- # N2 y4 c) r+ K" Q
+ A- A) Q) m, m2 |6 P
复制代码
- }- T0 i+ ?; h" U/ i2、qrcode_logo.php
+ U8 A _9 B8 M+ H8 dps:生成带Logo的二维码
4 |5 }+ O0 o1 Q$ @: L' x- /**
' I. M. |* h+ s2 a, n' A( X3 Q3 ^ - 1 A7 _% l, b4 c% S
- * Created by PhpStorm.
$ j6 p5 T" C0 Y
7 ~9 k' a6 x& i# {# j- * User: user
( s7 R8 |: `2 X( V @9 o: h - ( w9 `% ]- O) a8 }
- * Date: 2018/8/16% {; P: ?8 i4 t4 u: B* I
- 3 P$ ^4 Q. ~* I) R& L7 t
- * Time: 10:43
, z5 m { V; Q$ H0 ]. ?3 d
" }1 \$ O5 Z4 Q+ T: w6 R8 Q- */include "./qrcode/phpqrcode.php";$txt = "测试内容";$ K& z4 d9 J0 S0 v0 u7 \: p
- . ]6 w" ~8 s2 [ f, ^2 c( o# I6 W
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称7 J N+ v# v. z9 g6 G/ C
- 3 y' x2 y T' `7 N9 P- c# c
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
& _: X3 A7 _. ^! H$ ~/ Q3 m' m
$ C& j# z/ p8 i. T! d& L- $margin = 2;//边距
3 t+ D" S# Y) T g
7 f% M) h9 v; U1 @& E+ L- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片% _6 U# U8 z; X) G) P% @: q4 Q
) e8 \% n$ i4 i4 ~; C( z; M- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
n( |: Z) h( M# U0 ~, l - , U5 T8 m- A7 W( n: ^: Z
- $QR = $picPathAndName; //已经生成的原始二维码图
/ y% B$ E, F( X" q( y$ f0 i
7 m# ?4 a' ?+ q5 f" ~3 f- $Logo = './pic/logo.png'; 8 [ W/ a1 h; x
- * C1 q% _: y- x8 G& l% M: \$ M
- $Logo_re = './pic/test_logo.png'; + e8 j. I2 @) }. B) S% K
1 Q- W: K6 v. ^0 g- $QR = imagecreatefromstring(file_get_contents($QR)); 3 x3 x0 h9 `, j- K; f% }5 B4 G
- 1 h" ~$ d0 m+ |3 @0 }/ O; T1 i
- $Logo = imagecreatefromstring(file_get_contents($Logo));
. h; A7 W. u: I
' v' m) v {) C" a; @# e! d& G- $QR_width = imagesx($QR); //二维码图片宽度
$ B- E) D; h6 O K' r - 5 m! P* M* R5 ^7 z3 a& \7 U
- $QR_height = imagesy($QR); //二维码图片高度* a0 ^" P* p# q0 Z. s
- 0 e" ~: D4 g* q; |
- $logo_width = imagesx($Logo); //logo图片宽度
( F5 L8 m, G# C1 j, H8 s3 y2 O5 F. c - ( g/ T% F, Y& i4 ^( s% E$ c
- $logo_height = imagesy($Logo); //logo图片高度7 T% a% ]9 m6 B
- i e7 t) E. }" f8 Y/ m( A4 ^
- $logo_qr_width = $QR_width / 5; : t, ?7 ^* C6 X4 {1 J
7 p! j2 s) R/ {. l( p% Q- $scale = $logo_width / $logo_qr_width; * O6 W/ R J) ~8 V
- 2 f d0 o, f4 T5 c7 O2 C: G d
- $logo_qr_height = $logo_height / $scale;
& ~( i; @& W& d5 o& r7 i
' U ^2 _% ` G% Z- $from_width = ($QR_width - $logo_qr_width) / 2;* F& }: B9 V# a7 ^+ [
- 8 [& J/ M9 \: E
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
0 T6 j0 m) V3 _7 `
. f9 H6 n) \' a- //输出图片
$ O3 ^, d' a7 Z% `! `, Q% J - 3 [" y% l6 E: M1 l7 _# V% g
- imagepng($QR, $Logo_re);; ]; M8 J4 Y& H% U q$ O" L
- ' |2 s# Y7 M! V W9 b
- }0 O9 [0 e1 c4 \. U4 L
- 6 a$ ]3 h, n8 O* p3 p
1 \2 H! A4 ? B8 U& P
复制代码 3、qrcode_vcard.php (生成电子签名). S; ^3 D7 F ]0 Y, _6 f6 G+ r* E
7 v2 F$ F: M/ q- I1 mvCard格式:https://zh.wikipedia.org/wiki/VCard) \, j, O1 C& O' ]
6 R& r* ^% B- \5 N7 W `" b
- a! r9 @! [4 V& C. J% f2 I: i+ B
- * Created by PhpStorm.% H7 K; w! U; [! a9 K2 [: h$ B
- 0 s& v3 {' l1 n7 n6 Q$ V. V1 y% m
- * User: user* e( X Q- m* A/ M" d
2 T4 Q$ \- U* A! h: c) O$ [- * Date: 2018/8/15
1 W# g, D0 f1 ` - 7 i: u9 A4 l. k! n$ W
- * Time: 23:00
5 f, Q. a; S, j# ^% n2 T, S! u - k& f6 c, [- ?( k
- */require_once "./qrcode/phpqrcode.php";/**3 `$ s c3 \# ^; l7 p
* Y7 g8 R1 K; G3 @! t: V- * 生成电子签名. ]* G, x8 K' C
- + R' u+ c7 u% p4 Q# m- F
- * PS;使用微信扫描二维码 c0 W" l6 j9 T: |4 V( Y( T J
6 p/ W# q* E& Y. t0 Y4 V3 a6 J- */$content = 'BEGIN:VCARD' . "\n";//起始标志
1 N/ u7 g: S$ w7 G1 h0 L+ ]1 g
9 |' l6 t/ c+ y. k) o8 N* B- $content .= 'VERSION:2.1' . "\n";//当前版本
0 J. b) q- K' H5 H, V - / a% E) d/ ]6 r
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名! a9 ]: u2 B, C, }8 b1 Q9 s6 ?% i
5 \& f5 `3 y3 b7 Y9 G- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称( o3 S7 |& T! V0 d2 V
6 ~7 B! G7 o, K+ _# O, P- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
# K; O, n& L$ e
+ g2 D8 C! I; }- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
1 X1 G$ b* [2 z& d: r
m9 c! b/ k3 K3 f. C- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
" \. M# W6 S8 @: V
, \9 }/ ^( A. v1 v- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)9 M7 n- a! M0 G
- 2 ~ C A! J+ w) S
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话; ~0 a s5 \( b0 a9 g
+ X8 G& j) _ y& Z' q4 I: u- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱' j4 I& ~9 b8 P' t$ x& t2 b q
: m9 j8 U5 M Z# o6 S, b- $content .= 'URL:www.baidu.com' . "\n";//个人主页
5 a$ x5 L4 s/ v% b9 v Q$ d, y
2 b1 L& [$ s# j8 K4 v) Y- $content .= 'END:VCARD' . "\n";//结束标志7 v. m6 _! q2 Y2 j
. K0 F3 @$ B" r$ |0 N: @- q7 T5 O' r. k- QRcode::png($content);
, I0 P- b9 x/ T. }3 V
2 X! Q! b) l! l7 F+ K
$ @% E' F0 E- {0 k4 |' P; Z: U
复制代码
$ h* q9 X2 W' N, V相关文章推荐:, ?$ B$ [8 M( ]
1.PHP生成微信二维码实例
7 x, N; O4 h6 ]: }% i2.php网址转换生成二维码4 r# _0 ^2 e& i1 G1 Q9 x
相关视频推荐:
1 l+ Q7 t/ A7 I& c+ E1.独孤九贱(4)_PHP视频教程
2 B5 \& C3 M8 r# z8 {' L二、JQUERY生成QR CODE
2 n# I- m% u) w. r9 d: Q/ N6 Q源码地址:https://github.com/jeromeetienne/jquery-qrcode$ W. ~/ C" u! ^. X* E8 U. T+ e
. [( Q, y. U; n1 ?
jquery_create.php
; R1 U% f, u! b T2 W# n, w$ f& v. b0 V+ h$ |! j- d7 P' c
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 6 V4 A& T2 Q d7 a, t- A" c# i
三、PHP识别二维码; D1 {( E/ k1 Y1 Z H% \4 b
1、方法一' s2 A& W* g6 ]( ~. @
环境需求,安装如下扩展
, H' P4 o; D) X- ImageMagick B- l0 |( B# o8 t& v. V
- zbar, O/ S9 ]1 H, a" X7 N
- php-zbarcode
5 f# `" Q3 X2 J" T U/ U6 Y' Z% K) v; B* k( Z
2、方法二, S) K) U5 l7 l, d2 [
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以3 k+ \4 W, v; Q* {: n5 |1 g* N
qrReader类:https://github.com/baagee/php_QrReader% [+ ?4 _7 G; V# t! M& i$ R
: X: b' I( d) L6 ~4 W
- 2 H- _4 Q; W" l& q) l7 G; E/ W! H
- $qrcode = new QrReader('./test_logo.png'); //图片路径, C9 Z$ y- W2 q$ c4 K
- ) x, W6 W8 u" i8 O3 [ E( Q, J
- $text = $qrcode->text(); //返回识别后的文本$ Y6 D, V* g U8 e
5 c; x' [4 O4 v t" N8 m. ?- echo $text;
1 @+ k8 P% t+ \2 @' H# J; E - & W4 z- n$ q2 I( ^ _8 k
+ Q5 I0 H* E, L, W: y) T" w
复制代码
% d. I- s4 O# X6 F5 G& s+ J8 Y& b链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
. L1 a3 g, q+ m0 I$ ?) Y7 z4 r7 r. N/ V5 K; |3 m
J5 g% _7 `# O- B$ J ]' [4 A% m
8 _. W/ v9 J1 ~' T5 v. h
5 @7 ]; b) }- \1 |* p
: K3 x b3 i# z
; Q: G6 p$ P% J$ f/ O6 D* e, X% t1 q/ o# S7 ?$ }+ w
6 m) ~3 m+ S& ]! Y8 ^% R) d
1 Y+ L" I ?$ Y' C: F* J3 w4 Q! W |
|