管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。9 A" J/ v [/ X2 s$ a
---------------------------------------------------------------------------------------------------5 ]. p' `! F* t) |# ]( |
二维码的分类5 G: Q; }: S5 h. b/ i! I3 Q* x% X2 }
线性堆叠式二维码/ H" c& r. B, q1 d7 ^, |
; t7 R/ J& L' c
矩阵式二维码; `3 L- b$ W! Z( j
& B& J: B$ K" m) G# Q3 R二维码的优缺点5 A/ G2 Q$ @% a; V- ]2 f2 \, J7 w
优点
: I/ u: Q! E$ P o, F' P- f8 I信息容量大, B8 a! m4 H" v2 l Y
; D) ?( V' T) I. ^
编码范围广
+ Q: @- K+ F! A9 c' i: G
. T; a6 j9 D' \6 ^4 m- T8 W容错能力强 A2 C) c/ B- H0 y$ ]& a" {
- W& B1 V8 i' o, q& G* o; K
译码可靠性高
4 x7 y) s$ x) ]# X' h( Z; u) F' Y6 V' z9 d3 ?3 _8 @4 F
可引入加密措施
; o( ^+ B1 S% h2 U5 l# T6 C
( J0 ]6 f; z9 I, b1 h4 w成本低,易制作
2 f$ p. R# B/ g5 i: s' A* b1 y" u! q# c6 z) }) [0 f) v
缺点0 Q. `/ Y, h! l+ D8 _ [& \
二维码技术成为手机病毒、钓鱼网站传播的新渠道2 W* Z8 M0 Y1 K; q* Z% b" B$ G
- G7 j9 L# v* J% h) W信息泄密4 W3 M4 l; p; [! ~& A0 ?8 ?
8 o2 Q1 m- a3 w; t8 w' D- D o, l( i目前流行的三大国际标准
! h- P2 H/ s1 a: |# E6 hPDF417:不支持中文
6 V& t9 N- e" q' C; {0 o5 b
# `; @% V+ E# j7 l' bDM:专利未公开,需支付专利费用" [1 t6 D. F, s# ^; F
9 W6 k: I# |2 r/ n8 _3 n
QR CODE:专利公开,支持中文' B0 o- q; X4 `- s( |' p
2 B/ I6 \* [& U# a
QR CODE 纠错能力
: ?* r* a. B9 F2 ^: F. Y' w$ CL级:约可纠错7%的数据码字( f# V/ \% a3 _, J. s. A
4 Q% s4 s5 g* d) s6 {1 f, r, |& Y( H
M级:约可纠错15%的数据码字2 ^) e9 m3 M7 r0 C
# E. w/ r5 {2 T- w( H, H* y+ TQ级:约可纠错25%的数据码字
" H+ S' a" m! Y! l e! Q+ E) s4 ~* L4 b% {/ i [6 }( ^. Q% C
H级:约可纠错30%的数据码字
( o9 h0 z1 r. Q# N$ A8 ~/ N! v& v/ U9 V2 C$ C- E; G. N
前提条件
, {; W2 L0 F9 } kGD库
5 o: b( _" H, {6 V! n$ J9 j; A; l/ j- r7 A# Q/ C i) X* j
一、PHP生成QR CODE/ x q4 w( U; [. Q7 _, c4 e; B& q
官网:http://phpqrcode.sourceforge.net/
' t0 f% ]* u" S2 M1 x
3 s( c* p9 |, r, i7 v$ w$ o下载源码:https://github.com/endroid/qr-code7 K; Q4 `% m0 @4 G/ r0 S% [
0 ]" a4 V5 e. E, P; m. g
目录结构: R7 S# Y4 U1 D; Y* A$ M
7 ~ f! P$ S4 _5 c
3 Q: @1 I$ x! x& \
1、qrcode_create.php
6 Q8 y* |% b8 w& T4 Pps:生成普通二维码
! {3 B/ h d" n6 C& a7 G- 0 c' k4 r& H: N, \" D* a" |
- include_once "./qrcode/phpqrcode.php";/**
# M" L/ s6 A' i; a3 p* w
; ]4 Y4 k0 M: q" {/ O1 j/ p2 y- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
0 Q/ z4 b$ P6 g
! M. r% E v; K# o& o- * 在浏览器上直接生成一个二维码(内容为abc)' ~ B. x' k% e4 Q
- # r# E. Q. X+ e* ^+ ^6 p
- */QRcode::png("abc");
# ^7 g1 y' }+ P. [$ R - 6 M0 B3 Q7 S8 N! D
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
1 Z; e" P5 ?" ^( x5 F% O
' o5 ^! F3 P. j& b- * 生成文件到本地7 i) M" ?% I$ E6 Q1 e. @
- $ ?1 W. k# e% t( R5 d
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
' p" P1 O9 z; K$ r) e" Z+ N# f0 ? - 7 i1 t7 w2 U, B, b) `# l) G5 M
- * PS:$saveandprint源码的p6参数做了修改
( L# \# A9 K- ]3 G9 X: Z - * Z# E8 U% t* i/ @' q: N
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);7 b# b! ^$ x' {4 F6 a8 D1 g
4 I3 x% r. v& j z
2 }8 y) c- y5 r: Y7 S! a$ o
复制代码 * k2 { x) }! y, J! K) Z
2、qrcode_logo.php3 C; j% m7 T# ^3 Z# h
ps:生成带Logo的二维码
' s: ?# v# p' ]2 B$ v5 x9 P- /**
6 H/ M- \5 E% | w/ C) [- X4 [
1 E# h: U1 s+ h- * Created by PhpStorm.9 ]: k# r6 p+ X0 n" x
: b% L5 z: S% q7 @+ _0 H- @4 A- * User: user
7 ~2 m. w% ]! W
9 t2 t9 i6 P. k$ s( P3 C2 a- * Date: 2018/8/168 q( p. s- \* \; p. K# @
% {9 [* ]# t, p% G' L+ ?" d$ c- \- * Time: 10:43
. N8 S# u2 `) H. s
5 _ l+ B- g* i% k0 G5 z- */include "./qrcode/phpqrcode.php";$txt = "测试内容";
2 _ Z' J# |( H - 0 Z% n% C( S& c- l2 ^
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
! ~; h2 V6 I" R4 Q - % L0 S$ u s( h3 C7 g
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是! c1 p4 ^& o- b$ } ]* d' Z6 D
- 1 Q2 K5 o/ \$ g
- $margin = 2;//边距' V( X2 J& j! s% |# @
- 0 W6 c- n% F6 z2 r) C4 F
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
" u2 u9 A; k3 ]) n ~8 a
, v0 L( a9 q7 h- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
7 I5 C( _. ~/ J
9 a1 l8 q% g6 p1 `4 N) e+ h- u- $QR = $picPathAndName; //已经生成的原始二维码图
2 `8 {' ]3 `* R
" _, n" u' L; K2 s l& z" A* M- $Logo = './pic/logo.png'; ( X; u9 J, y) }' H' a, h. r& x: ?
- 1 [" h, b4 v, f
- $Logo_re = './pic/test_logo.png';
6 B. B' P3 H3 @- u - 3 R5 f- r8 L2 ]. b+ y/ k$ ?
- $QR = imagecreatefromstring(file_get_contents($QR));
. I7 h3 _; |8 k: Z) s
! \; G1 L& m q6 y- $Logo = imagecreatefromstring(file_get_contents($Logo));
. d- ~* \; k8 X# J0 d - / Y9 {9 U$ `' t# i% L
- $QR_width = imagesx($QR); //二维码图片宽度) N# p: z; r. M& _2 H
9 y" X2 ]6 Z( Y: v8 `/ R* m9 Y2 P- $QR_height = imagesy($QR); //二维码图片高度
( i: G! j& j. A; T3 K1 j; r" z
$ M# ~9 X2 y( f3 i$ w( I- $logo_width = imagesx($Logo); //logo图片宽度
" M p: o; C9 s) y6 d+ b9 t; f
; L! v9 K! Z, _2 r" \! p% Y* q- ~- $logo_height = imagesy($Logo); //logo图片高度
* Q% W2 R6 K! w& C, h+ T - X5 l( U- M4 j; A2 [
- $logo_qr_width = $QR_width / 5; ! s( {0 V0 i$ H1 P4 P `
- * J* V! \* `* h+ F, b9 g- M0 ?& i
- $scale = $logo_width / $logo_qr_width;
2 D! ]( b( ?) g, y( `# V9 A
7 c' e3 Z: A; x% G9 |1 U: h- $logo_qr_height = $logo_height / $scale;
+ C+ }! O# g" H6 i) I' J& D7 x1 O# m* U
1 D1 G% v/ o' j' H& v9 J, s8 {- $from_width = ($QR_width - $logo_qr_width) / 2;
. x. @8 z+ A7 g. k2 Y" H - % k D; t3 V3 M6 E7 \" S0 o: d
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
8 _! O* r/ `- F* f! L
) n: D* J% W# a0 f( c2 d+ c- //输出图片8 P! F z7 W$ _# h3 M3 P' R4 x
* n, o! W; G$ n6 @- [- imagepng($QR, $Logo_re);
" L8 A2 J8 _( E& l9 a4 B8 m" G
+ l7 K4 N+ Y4 Y; s1 e2 h& l4 h- }6 @9 a; a( S. d7 o( w$ d: m
- 5 P4 O3 z8 r) O$ u
2 \5 Z: i* a9 P! `% {3 N) f- h8 F6 _
复制代码 3、qrcode_vcard.php (生成电子签名)$ S, a6 R& `0 K- ?7 q3 u
/ i! w4 o7 b5 D9 g. K5 f
vCard格式:https://zh.wikipedia.org/wiki/VCard
6 M, d% I4 U5 T3 E! X; J" S# M7 v) D! H. L9 c1 J# P. {& f0 ]( g
: [! F* H$ w$ M% A9 A2 j- * Created by PhpStorm.
+ [* L1 S: `% ^% c; x - ' P- ?' q2 b' i+ f
- * User: user2 b9 U$ V# c4 f) a' |* w
6 L- U8 U2 k9 _9 N7 A7 K- * Date: 2018/8/15
3 Z6 N* m$ P y0 F - 8 W; }& ~- Q- `! t- s
- * Time: 23:00. E5 v; R5 o% B
8 E+ C/ _9 Q4 j$ W- */require_once "./qrcode/phpqrcode.php";/**
, w2 v, B" e. o# \% q
( v7 \0 `# J! _$ [6 s* k- * 生成电子签名! y* }( R) H" w
- B6 _( ?" l$ Q, T5 H* W- * PS;使用微信扫描二维码4 h6 E6 k% b0 t4 d( ?- i. o
. o+ F1 r4 D1 R' e0 a- */$content = 'BEGIN:VCARD' . "\n";//起始标志# f- c% z/ g7 q+ g2 y# M6 H
- $ }4 q) W0 U: w! b
- $content .= 'VERSION:2.1' . "\n";//当前版本
3 k& k: S4 Q" u& w: l - 5 S0 ]5 b* e' Y5 m+ a+ S
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名9 w; w# ^- Z/ J( j/ g1 m$ C, m
2 V6 }" A' U# C! n ^- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称6 S' m( ?) c1 \& i
3 F3 t5 P& Z* v- E8 Y) ]- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
5 u6 A G7 l X( k8 {
. z3 |" D0 i& B, H- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话" X5 L* P# {9 R; ~' X
- - o" o7 H% M7 [0 p5 e5 _
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址$ N2 [# V* a# r* Y$ y' I
3 r* S9 F' g5 Y- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
1 d4 l) d2 Y( ]+ I
c7 P) \& |5 I- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
; g2 [* d8 D2 R' ^ - ; ^" _8 K& y& L! K& b$ ~
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱% _! Z' R" F, a7 S6 |, |7 D
- O* \ Z+ i- k( C7 t
- $content .= 'URL:www.baidu.com' . "\n";//个人主页
) o1 N1 f w4 h0 A! e& d' d9 I
; J4 d/ N' \3 U7 U* E- $content .= 'END:VCARD' . "\n";//结束标志" A$ F' J4 W8 a7 f0 x
8 g/ X: W) s) O7 U9 Z- QRcode::png($content);
. [9 j# j0 w2 I! L0 O9 n* Q - A: h q. u3 |: a
3 B6 B4 {) q1 h& ?9 W- F
复制代码
- T8 W: ]$ S# |+ G相关文章推荐:: X+ r8 }* Y7 c$ T5 K" P$ L
1.PHP生成微信二维码实例
( w% G" W" ~+ j: j2.php网址转换生成二维码
' y! `2 Q5 X& t: G相关视频推荐:3 E* B0 x/ p, ]# u$ {
1.独孤九贱(4)_PHP视频教程
3 e: @& k, n: }5 F二、JQUERY生成QR CODE
+ t- y: P3 ~) c& u5 e- D源码地址:https://github.com/jeromeetienne/jquery-qrcode4 ]. k! p9 S) U9 z3 [
! m o" G2 e, D; {- Kjquery_create.php
5 ]! F" ~) X+ {: H0 v
& P7 l# [1 m, U& N$ n; n: r- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 # U6 D. f! q1 i& ~" F7 l
三、PHP识别二维码; j) |, w# [ T
1、方法一; e6 [9 e8 q6 W" ?1 Z) Q
环境需求,安装如下扩展
. i4 R" J V% M- ImageMagick& A+ K% K2 k6 d. q8 {+ {# i* b
- zbar
3 k1 r5 w* T4 E7 [' r$ E- php-zbarcode+ x! R" ~& p( n, P
/ F& A! }2 y" |- f1 N/ r, {8 J. J
2、方法二
7 w, K4 I' g- | w9 pPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以; T( O& l' @2 K Q: L D
qrReader类:https://github.com/baagee/php_QrReader% ^& q, e0 T! \5 F
8 o- N, j3 E# N, x0 ?: O1 N9 q
3 M _( P& y( K( A( @: _, j- $qrcode = new QrReader('./test_logo.png'); //图片路径) V1 L( [. c) ~4 {) D
- % X# Q2 O# Q5 ? J
- $text = $qrcode->text(); //返回识别后的文本! @9 t% j5 f; I2 _% k+ v/ i3 a
- , \- O( n$ U7 j( G: x& n
- echo $text;9 w9 z& a5 G, `9 \& u$ I
- 4 v! G* m# i, y j) \
0 d! n) K) E: f9 L% b* E( C4 D. h
复制代码 + B/ v4 ~# ]% A6 t6 @
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y70 ~# S5 n+ ~% }, ?
/ C: c" G! @0 z" G
$ {& `7 I- ^ z4 R6 ]9 w8 L$ b% H2 C" i7 ~8 w% x
! A* q% a& }7 [% B4 G, a m: r
0 T1 ~2 O g/ [9 `. G; q; r
3 U' E5 B+ n% c4 }4 g5 K; ]& W
8 ~9 p8 {9 d K+ n9 y! ?+ _" s: N2 q4 e! d" C2 x( {
) M$ ~ ?. U' g1 u
|
|