本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
! F/ x* x$ G2 E( O7 V- b+ D---------------------------------------------------------------------------------------------------3 y8 }* @6 I5 q! H
二维码的分类! P& J6 i' }7 [& M
线性堆叠式二维码, y( A8 S& L9 x; ]! H0 F' D, r
( t" W- S. u2 }, w# [
矩阵式二维码
7 f: l z1 d7 m* ]1 {4 b
0 x# } s+ d1 ~1 [二维码的优缺点% L. a0 g9 W2 Y% i- R$ Z' n- M2 y
优点
+ S6 j+ G" {- u信息容量大
) o D8 A7 C- F% l% E2 C |9 ~, u" r% ?' W
编码范围广
. C8 o/ O3 f) {5 \3 ^
1 d8 T; ~5 t9 H/ l+ ?- \0 O容错能力强
1 u: t/ I& H) V8 i0 ]0 u' r6 D8 n/ |# r) M1 g
译码可靠性高: \: X; h9 {) l9 G/ Q! F
! G+ w1 y" ?! `. |* W
可引入加密措施6 U9 b$ R; U! z: H, k
% P/ q1 F4 d2 f成本低,易制作& N- M Y3 B6 m6 x$ J0 |
- `- h) a" F- b l: X( o) e缺点4 p2 D8 l2 u" J) ?0 W6 @( P
二维码技术成为手机病毒、钓鱼网站传播的新渠道
. A3 B2 b9 ?5 K' @: ]
# c4 J( A% Q: t$ X信息泄密; c! T3 ]7 Q4 e: a# S4 A
& } O4 z3 K/ c" d- b目前流行的三大国际标准
2 {4 m# d/ o0 ~7 N5 r( t1 _PDF417:不支持中文
( j Q8 Z* n& V; T
m- M# a8 l- c6 @6 ^ nDM:专利未公开,需支付专利费用
1 ?; R8 C9 G* { W% U0 C
- R4 [9 ]/ Y& X& M# _QR CODE:专利公开,支持中文' x% b" R, c* u9 m
$ ~4 Y4 r- l0 ?3 p( u6 QQR CODE 纠错能力3 D7 X; \" \7 V* V" Z
L级:约可纠错7%的数据码字
5 L/ }6 T. Q7 M% g
2 N; _3 x! _1 IM级:约可纠错15%的数据码字8 j) D9 T0 H6 T; _5 t
& Y" i" g* W7 Q# W- d7 m3 lQ级:约可纠错25%的数据码字& V" I* R% Y( T! i4 A2 q1 r* g
/ _8 h j' Z# t4 {: }7 J( U9 O/ j! aH级:约可纠错30%的数据码字$ J% [ Y3 \0 Y9 r% W
[: F$ q8 S, t' f) T前提条件
7 P, [' a6 [. I9 F# b$ }1 GGD库9 L, E2 m" l. X2 Y- P C3 ^# q
! [" ^3 B/ a- Z" \一、PHP生成QR CODE
. x2 [0 G7 C2 k官网:http://phpqrcode.sourceforge.net/
3 Y; u/ Y% e# c5 m4 w1 n5 h) d9 o6 `, D$ P, o2 z
下载源码:https://github.com/endroid/qr-code5 Y, A& u% M4 z& y/ T! \
0 O+ T" [( l- [. U
目录结构
* V& j1 x2 T! m9 N% Q* D0 w y: K
) D" @4 r9 R3 E: Z& {/ q; B
! O9 z# v7 U- |: n4 U1、qrcode_create.php" |1 A/ g; R& i( X1 x
ps:生成普通二维码
$ u& \$ G& p8 Z' f# i
' @' z ]; V3 h0 a7 h- include_once "./qrcode/phpqrcode.php";/**. O$ s6 x* f! [
- 7 o) r. v/ K: m) c/ K# G
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
6 M S, U R: v! s1 u( p - ; z; ]4 {( t' x; [# ^/ `7 @1 w
- * 在浏览器上直接生成一个二维码(内容为abc)- f7 x: @/ {3 a+ t4 U- E3 w
, Y, w3 A1 W1 P* k: P- */QRcode::png("abc");% X, w) m9 x' i
+ P/ N) F2 T Y5 n5 {- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
: F: Z, w* {9 L4 H5 K
, |' d" r+ O5 a M7 q1 r2 P& {- * 生成文件到本地! ?7 {: _$ O) @0 G
! N- e8 u( c; ?6 t3 F7 D& r. K- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)# `9 }* [" }- i0 ~2 \
3 {6 w! p* V; ?% b- * PS:$saveandprint源码的p6参数做了修改
; p4 f6 S; H/ U9 P1 m- A
3 \% T9 E* Q% Z: }- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);3 T' w% {, u! |2 p
- : l; K( ` z) I9 A
7 f: k: ^9 N2 K, l% _9 g! ]
复制代码
) ?- c/ U; M. l/ G, P3 q3 Q* l2、qrcode_logo.php
: ~3 G6 K( R! `ps:生成带Logo的二维码
) \ i. x5 [- m8 C- /**
1 l# S: Q8 Y- T0 H7 }
$ Z8 R/ u3 C+ }1 k5 `% {- * Created by PhpStorm.
8 O" O3 f' R; y
/ L2 s5 ?5 F2 [7 R- * User: user
2 [4 [) F# z) c7 w5 r+ E* l - : V6 e% S5 ?9 v: [1 u; A4 I
- * Date: 2018/8/16
V' m7 r& r% K" k" b8 a - & n# i( o; D, x# n6 c* {2 @( w
- * Time: 10:43
; U: G5 ~& G1 C# E - 7 O8 V6 h! D$ L: t* Q' {
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";2 L; z0 x% e! t& ]5 V1 o% h) U
% |4 z& M( p* n* G; o' |/ V7 L, q8 V- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称% s) l; }. U N# c
- 3 _0 N3 }; V; |! a
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是% a2 b# h1 {+ B, x! T
- 1 u+ m) Z% W3 i/ y+ @% a
- $margin = 2;//边距
' B" v) k. x& X y
p# k+ Q, v: k$ S8 t- c- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片* {) V: M5 z& z
4 k( H# T2 u6 k" Y- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ 0 O+ e. T5 s& c. U
- * y8 N6 S) M$ V" h, D ]) J
- $QR = $picPathAndName; //已经生成的原始二维码图
5 S2 ]2 @; @# u% p: S. j
7 {! g. d0 G: N7 m+ t& F8 {( t- $Logo = './pic/logo.png';
+ Y0 {# o, z( W8 U0 ?% ]. h s! w
0 d* C. N- W& ~- $Logo_re = './pic/test_logo.png'; " W W0 R; _& z; F5 I/ O
- 6 w% ^% p, p" {' d. @
- $QR = imagecreatefromstring(file_get_contents($QR)); ) r2 }* Y# l- g, |
- ( [ V- l0 [, I2 F
- $Logo = imagecreatefromstring(file_get_contents($Logo));
p0 H% x( M& ~6 u' u4 E
: y) h2 o4 o$ e! d, x- d- $QR_width = imagesx($QR); //二维码图片宽度
$ U9 R& G, b2 {0 _9 F - , B% l \3 t+ t% D- {
- $QR_height = imagesy($QR); //二维码图片高度2 K! s7 k) O0 c& H" W% x, \3 ^
- 6 C; _; Z- O( t% \# k9 u$ v; j3 f9 e
- $logo_width = imagesx($Logo); //logo图片宽度! x- v2 W( ^0 E% j; x
4 `* E0 @* M+ x4 a7 x- $logo_height = imagesy($Logo); //logo图片高度
( g5 K$ m# y. P! {" B - ' W: J; I. L9 I7 T
- $logo_qr_width = $QR_width / 5;
0 q D E3 t9 Q - ! [. p4 |/ h* T) X& s1 H$ J2 c6 Y
- $scale = $logo_width / $logo_qr_width; 2 \! d F1 |! H l9 A1 @: g
- 4 k) ?/ ?. q$ | X+ T" r
- $logo_qr_height = $logo_height / $scale; 2 P0 C& o1 e, [! ~! F
- 1 F, `, I$ m, y/ j: D; w+ R; N h) \
- $from_width = ($QR_width - $logo_qr_width) / 2;3 P, Y g4 y- b1 B+ y
$ E, `( X! S& o; ]3 _- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); 1 [9 u6 v" Y! k5 g
+ _$ W$ F6 j5 m- //输出图片4 ], Z& I% Q) p& I3 Z
* ^( z6 C& f+ e9 J- imagepng($QR, $Logo_re);
. Y- d8 u h* |+ G; Z( s. |3 b& D - - M% j' h# }( y3 P& c
- }
* j4 Z- }+ C* b0 h* T
. p5 P/ ?+ T. {, `& U |; ~& Y
* J2 T) Y1 o" h* w2 ^
复制代码 3、qrcode_vcard.php (生成电子签名)
9 k8 k2 N* g# H( B: y) |' a7 |& {" N
vCard格式:https://zh.wikipedia.org/wiki/VCard
9 i1 d- q* n, V8 y% m: O! \
3 q" `8 M$ i/ I' [3 U3 x- T% |- 3 r/ l6 {8 r; S8 V* @$ W( q, Q
- * Created by PhpStorm.
3 D) A- H, ^1 Z! x- Q* i+ L, \; r - $ ~1 n; F2 o1 I' \" @$ w. C
- * User: user
# X' k3 w: a0 `/ W4 N7 b. ]; L
7 w2 V' b1 ^. O- * Date: 2018/8/15: ?5 q3 _0 A0 G/ I: y" F
1 B" ~% G$ }* C- * Time: 23:00: N, B/ ^3 P7 [+ f
- q6 j; _5 Q& F- */require_once "./qrcode/phpqrcode.php";/**
P7 x: k8 D$ `1 g2 c" L
3 s. J: A: }) G/ j* l: U- * 生成电子签名6 G1 t5 S' H: F$ a7 T
- 4 T$ _0 }& @1 ~) x8 M+ @
- * PS;使用微信扫描二维码, A; G. }' @6 D. o8 C4 F
/ u2 l/ S9 ?7 ?% Q# U; L6 j- */$content = 'BEGIN:VCARD' . "\n";//起始标志4 k; q. D) p5 T8 m
- ' K- w6 U; {, F' g* v
- $content .= 'VERSION:2.1' . "\n";//当前版本! j2 s [: A7 s( V1 E4 v' X5 b
0 q& d& R5 S; r- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名. |7 H& ]: a& }* y6 s: N8 r& f
* {+ P2 ]7 ~$ E7 q2 y+ c5 ~5 i- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称( F0 g& g' E4 \- k7 C" d$ P
2 l& K) R& Z( q3 y: D- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
/ Y q' L/ Z; ?, `; D1 e$ f - % q8 H2 j3 N) m2 }) m
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话 j: {. D) E4 I0 P
- % F6 P: j; U/ [' m8 h% M, d
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
; r3 n! X1 t0 `) x; l" D; [
; d+ _. S" I( g1 l- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
! ]) ?+ P0 ?/ X+ h0 @
- @: W# N% s7 `; q" r0 x/ O! d- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话6 T1 `' c ]8 Z5 @( d
- | ^# W4 B6 _6 U" n& K: F9 R
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
, @! E1 A: l! W2 n
6 e7 A4 E0 E+ H3 ~0 ?' G+ u- $content .= 'URL:www.baidu.com' . "\n";//个人主页
, @5 y( d# |& D7 T
' e1 w& }+ S `8 U4 \ N- $content .= 'END:VCARD' . "\n";//结束标志
) T0 P' I. H" s& y+ ? S; r/ l - : V0 x& i2 I7 V4 b
- QRcode::png($content);. \$ W8 [0 w: u6 {+ s
- , r3 G4 l: t) k f- @* V# i& _
3 M6 _- I3 _, c# ?6 i7 _0 d
复制代码 7 R, v; R. R; M1 X0 u; C
相关文章推荐:
5 h$ ?" J9 w$ h1.PHP生成微信二维码实例
- O: ^6 z; S$ h9 g# b2.php网址转换生成二维码
/ J$ o' c* l$ l' h: s相关视频推荐:
( a* s! d& U5 g; Y) g8 ~# p3 N3 b1.独孤九贱(4)_PHP视频教程
4 v6 `# [5 W' d8 O二、JQUERY生成QR CODE. d1 f- V. Q# G! k
源码地址:https://github.com/jeromeetienne/jquery-qrcode
; @1 |' K v7 u
$ U2 F0 w+ c) Z: K9 ~8 pjquery_create.php8 ~0 x& J3 [4 W" w E
9 T0 `4 @* _( I+ k) K5 m+ |- i, j
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 ' I" v& ^0 x( W2 [' f/ F& \* w
三、PHP识别二维码4 f$ O; Z% _: _
1、方法一0 _7 H! ^+ |1 w3 F" R: r
环境需求,安装如下扩展
3 k& }0 q1 p* s: `- J- ImageMagick( i8 ^& b+ p% v1 K) s3 p# w3 {
- zbar! v" g! T$ n2 |. M: Z* {( B' i
- php-zbarcode3 d8 y0 ^' d/ f ~' U! [
! h x' j, z0 T: j
2、方法二
/ v* S5 V5 ?- ]9 }% T s. K8 SPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以8 X+ L5 l# m0 p; y; n; I7 P& R
qrReader类:https://github.com/baagee/php_QrReader
+ P6 F( w/ I- K, F, a* c( A8 P( b/ S0 K3 q
- 5 F- S* U2 ~, R0 ?4 d
- $qrcode = new QrReader('./test_logo.png'); //图片路径. P0 I1 M; g/ j2 I" C6 Z$ |# W
1 C9 `+ l. s" o) o/ j: C- $text = $qrcode->text(); //返回识别后的文本3 x9 q" b0 _- n- d( y7 Q
1 K- O1 z R( ^, n# R# Z' m9 k" p- echo $text;, L" M0 v2 A" U' P2 n! E9 r0 x+ _
. h* Q, p: u3 B5 ?7 A5 b
o M( J) E+ N8 F1 i
复制代码
2 D7 j9 @) p& l& l0 }链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
( D9 z! z. g( S1 L
+ Q; Q) z1 Q' |0 U
8 J, Y9 O4 B& g: E; A7 h& `0 s7 X/ w2 z) q4 T7 h% D
. z# ^( s5 A( ]
/ f8 }4 e" o1 u/ t' k8 r9 V7 j( T/ e0 c9 A
7 G! a( S' `& E: ~
' z8 K, n5 P8 z
( ]& Y/ q5 N: y+ U
|