本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。9 D" `7 d* n6 F! K, t
---------------------------------------------------------------------------------------------------
$ N: l2 L1 ^# T0 E+ V二维码的分类# E3 |7 ]+ p5 u* U3 p2 P9 A9 O! v
线性堆叠式二维码) x/ M7 o! s! E; L
# V* L: Q! m0 \& ?$ ?( |2 v矩阵式二维码( o5 E) i, R# H4 l2 J
/ F3 b- @9 V/ [! Y' y8 P二维码的优缺点
) s" r7 [" Q" S( G) r, v优点
. b5 M6 i4 E- e# t- G$ O* w信息容量大
& ]* r/ H+ p/ f* U% M+ o* ]) z
9 f6 e: ]+ k5 j) [) H编码范围广7 G" M3 j, Q6 m2 T- W- l
9 Z# {+ r4 y9 V; U" f2 N/ l( N9 ~( D容错能力强# A4 T( |9 Z( P
' @3 }1 t3 j2 N9 M u译码可靠性高
. e! j8 B' u2 Z% @
& d% f7 z& X5 J3 m( D v3 E可引入加密措施1 `: w g \ }! l/ u
2 A. R p: g# t: A9 g
成本低,易制作
1 n* W- J$ j, _# L- t4 x2 K1 h5 N
0 l" u. o3 A( [, F4 m缺点
& ]0 y8 {6 ?5 t5 o0 r+ L二维码技术成为手机病毒、钓鱼网站传播的新渠道' v( X% V9 V# @: N: ~8 U8 C9 c
7 U, ]8 i3 S- N& ^. m6 e% Z信息泄密
3 ?" t) a- Z. h+ E
& D, M' _0 A3 `3 y V4 @目前流行的三大国际标准, N% v3 p( G$ K9 K0 i! d
PDF417:不支持中文! J+ j# C& ^/ b7 I
$ ~9 ~4 L4 Q' \4 _- q4 w
DM:专利未公开,需支付专利费用! t/ i! Z; d( P: r4 h* c X5 D
. }6 q7 i: i" z% e% jQR CODE:专利公开,支持中文
1 K% r9 F* G; c8 w# F# l% s/ x! H# j* v+ V1 M! y/ S+ ]2 d
QR CODE 纠错能力& ?5 @/ @8 e" R/ `
L级:约可纠错7%的数据码字! N0 b5 g9 m) ]+ k" ~
& A6 K* F9 d' b4 `
M级:约可纠错15%的数据码字7 G! v/ `$ ^2 Y
2 z) {9 x2 I5 K# }
Q级:约可纠错25%的数据码字1 i% f$ Y+ [/ i/ y3 A1 D
/ Q ^# ]& C' o' y6 QH级:约可纠错30%的数据码字
5 z. F; U& `- T+ {' X+ A* S+ {3 ]( \6 t& ]
前提条件9 U2 u& R0 V) ]4 Z6 a" y5 |! O
GD库
1 B" H" B& D& H6 l9 J; ~0 J
$ E2 l" R$ Y5 d, W# o一、PHP生成QR CODE* Y: L: W7 s& N8 G
官网:http://phpqrcode.sourceforge.net/9 Z2 U+ k) x- v" h
" w0 z; a9 K" }0 ?4 v# g下载源码:https://github.com/endroid/qr-code
, i3 G* }/ I" O5 R1 B$ f- L& A3 V6 o2 l
目录结构" l, H2 p2 r- Y7 e/ w% l# C7 V
, H& f6 M1 [) ^7 M- `+ ?. @8 J8 |' }- a) ~6 X1 U0 f2 T
1、qrcode_create.php
0 W; L$ R7 G) Z; q0 ]+ _' rps:生成普通二维码1 x; z. q( F* g) c+ [
" l* t4 S, P- t* z5 ]* ~- include_once "./qrcode/phpqrcode.php";/**$ l6 c3 H& B) b' x# s
* `. T9 V' ]- c5 c; ^- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径0 r) R* V9 l: l |
; g) K* w" \. l3 ?+ E& R* Y# u- * 在浏览器上直接生成一个二维码(内容为abc)6 J) G( ~/ }0 ^6 a( u5 n7 E" ]
- 0 _3 k7 X5 f _4 Z
- */QRcode::png("abc");9 o2 `0 q2 V; j5 ^# K! {
9 s" G9 V, C; n% A- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
( P; Q5 k# h" j* D- b. `9 V" f/ f - 5 R: j5 k% U O
- * 生成文件到本地
2 X' M: q& n* z2 _( R/ X - # w x Q0 l4 Y' s5 Q# t A* [& n
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
0 v* A% _/ G! X' {6 r
' ?! K. [3 i7 }4 u% d/ e! t- * PS:$saveandprint源码的p6参数做了修改
% J7 f" j- H& C6 `; c1 o
6 k$ [; |" ^0 v- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
/ M. |* i+ u/ U D- x, \ - 4 @2 G2 p( w% ?& _* k
- # h# v6 q7 K% Q/ @/ l% B/ |
复制代码 , l4 m) h/ L. G4 E+ B% q6 d
2、qrcode_logo.php
& @* \7 {) i' F) Pps:生成带Logo的二维码
* Z' K1 _. [3 G2 Y/ p( Y- /**( b: ~! E- q& u, k) {; j
8 D% }+ f( `" A- * Created by PhpStorm.7 g3 i- E% \+ d( X8 Y+ M' e/ V
( @! L9 X$ ^- v, L3 V N7 ?8 c; E- * User: user
$ D3 W; y$ z5 X) x* w - 8 z) {# _$ ]/ f' e1 O% z' k; @
- * Date: 2018/8/16
9 c( J% ?3 V4 P* n% M
$ [) w& f& z* x- * Time: 10:43/ ~0 U9 Z6 a B& m2 }0 l# r
- ! m) _* I) c$ r0 D1 R: D: |- c
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";
# w0 k- P9 a2 o- Q8 y0 m - # m2 n4 E. \) Y/ z
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称8 `( F7 n7 y9 H9 P3 t7 r
- 8 e" Y- z7 [1 H! \8 G/ m
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是! |; m7 ^6 T4 c
4 S; y9 C& `+ i' s; l" n( |0 \4 W* Z- $margin = 2;//边距' m7 P7 [. B& Q& i2 a6 Z4 b
- 7 U$ N' H! S9 Q
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片, x5 \" o/ X4 t( o8 A" @) }' u
4 `1 M2 {7 r8 \5 J- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
: W& T4 e+ o4 [5 [( o p - 5 {2 z& D# O2 j+ f( l7 Y3 A" o
- $QR = $picPathAndName; //已经生成的原始二维码图
! |% r I* v% h- s- _% @! J - * s; q8 M/ F4 H! K7 Q4 A2 r' k/ c
- $Logo = './pic/logo.png';
9 y3 D7 G9 _$ A! j- u+ F - + @2 i* f: ], I! E( E$ p6 {
- $Logo_re = './pic/test_logo.png'; . a3 ?" `: O- j1 E( Z9 ?# n h
- 7 p1 S1 y+ h' U6 G' p
- $QR = imagecreatefromstring(file_get_contents($QR)); - ?( u; X8 ^" m
' a/ n5 N. ?. X& {" z& ?- $Logo = imagecreatefromstring(file_get_contents($Logo)); $ N! H. P$ ^3 f0 R" p
- . M, r6 f. V+ J/ L! E( Q. k
- $QR_width = imagesx($QR); //二维码图片宽度
4 n% v& z- B7 [! t$ x5 V7 C
@# \/ D3 l7 {8 ], D0 v; W- $QR_height = imagesy($QR); //二维码图片高度( [" ]' h+ ^! C( w
- . |' w2 Z! `# V# K
- $logo_width = imagesx($Logo); //logo图片宽度9 x& `% P. \2 q" Y* A
- : t6 _* `5 c; ? \, l7 ?
- $logo_height = imagesy($Logo); //logo图片高度
6 b9 i; ?9 o- b* u - % t. w1 f7 n5 M# @9 a/ o; T
- $logo_qr_width = $QR_width / 5; * Z/ o/ j8 w9 x( M
+ E; Q- l. @4 w# U- $scale = $logo_width / $logo_qr_width;
/ [7 g2 o5 g0 ~' h - % F8 W5 Y$ o, g" F! l
- $logo_qr_height = $logo_height / $scale; & t: ^$ d! T& D4 N' f/ a. ^. l1 V
! w$ U( } W( X) M6 L( m/ K- $from_width = ($QR_width - $logo_qr_width) / 2;5 t% y4 Z" Z( A$ X- C4 c
- 1 o3 H0 P* M$ S" i- n
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
- f9 B0 N- Z+ H& `4 o. m - ! ~6 h" G/ v/ U! g& M- }
- //输出图片0 [& x* M8 T2 U1 W& h* r/ u/ k
x5 R0 e: o4 {& G- imagepng($QR, $Logo_re);
5 ?* M% Y/ v" z; {9 T
; x: _8 S2 V4 f' @ L- }
- C R" c# `4 n7 k - / d1 y! ?: \, d! _
9 X, h( `2 @% o4 B5 T+ ?% N
复制代码 3、qrcode_vcard.php (生成电子签名)
2 e9 q0 c% U& e) a! \: f/ h4 Y1 h; Y
vCard格式:https://zh.wikipedia.org/wiki/VCard
; v5 l% g8 X- c9 o4 W; L8 u7 b6 F5 Q7 K) ]2 L1 ]6 P
- 8 ^) R, A/ a$ q+ K5 r$ p: R$ y
- * Created by PhpStorm.. X0 |/ B8 Z0 w4 o' G
- ! k: l+ n; O: t" `0 p! C
- * User: user" z) J5 e3 Q( o$ j Y8 \8 H
1 ]% }7 t8 M: U' a, b* i- * Date: 2018/8/15/ u ]3 o1 n! b: U7 a
" k$ W/ @. r" E9 G; p$ k6 }- * Time: 23:00
+ X% P% L3 K" n$ H$ c" ?( v
4 y/ \; S) Q) U2 P# P- */require_once "./qrcode/phpqrcode.php";/**8 y5 T! T# p9 z3 t5 \
3 l3 ?( ^* u( G0 O1 j- `- * 生成电子签名, Y6 X- _+ W# }! G) ^: R/ n
- 7 t# X8 H. C0 P8 @5 I' m
- * PS;使用微信扫描二维码
8 }: s2 i' P$ K; V: o - $ _7 r. e, p& ~, ~
- */$content = 'BEGIN:VCARD' . "\n";//起始标志
- A) y1 v7 @* J+ D& C! l! R( i
6 o4 u$ ^' H( `3 T- $content .= 'VERSION:2.1' . "\n";//当前版本" ~' O$ a4 T( x
$ @$ p' k7 T% F c9 j- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名1 i/ O4 K. z- P
! N6 {0 g1 c6 V0 t0 R, e- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
- d+ g$ L! t0 k% F4 g- @8 O - 4 N* M8 N2 N- T7 q0 l( ^' Y# H
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位' b' A3 w$ u% M/ Z6 c
- + C+ n/ z1 `$ d6 i. `$ t
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
) ~! @( A$ g9 e' Q
# x4 k7 P8 H+ }$ d4 e- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址! n$ M0 g$ u% b5 w A) f3 G
# Z: H- ]! y& ^* Q6 A+ B- W- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家); { @4 N6 t6 o! _9 P
- : {) R0 m+ |' ]4 |. }7 u+ r* V
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话9 S0 {9 b! b+ z' R$ N
- 7 B. ^$ d; F4 n9 j1 H/ R" c; A" W
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱; |2 Q+ a7 `* q0 n. x D B
: L g7 f/ d g# c- $content .= 'URL:www.baidu.com' . "\n";//个人主页2 Q0 h- \! G8 v+ e, D
$ z& H+ e( w0 {6 {- $content .= 'END:VCARD' . "\n";//结束标志
! a: y. r2 |6 x3 G# S$ w. X4 Z
$ a* C- ]- x( R5 z: ^5 K- QRcode::png($content);
% h1 I% q% l: P
$ R1 Z! `$ R1 g7 v' p- " U$ N3 W! p, J: p/ b' `1 x
复制代码
3 O3 q! u8 `7 o; A" t相关文章推荐:: l5 ^1 r8 o8 F9 I: i
1.PHP生成微信二维码实例' w: X% c8 b. d3 }% I
2.php网址转换生成二维码
) E A; y- J X( F相关视频推荐:
9 g$ a* \- m7 t9 B; P& a; w1.独孤九贱(4)_PHP视频教程; U* I3 F2 k2 d) L4 Y" P
二、JQUERY生成QR CODE0 H/ H8 q8 T" b3 s) M& n/ l1 i
源码地址:https://github.com/jeromeetienne/jquery-qrcode
; R- a, }, B. n6 _- b
# |% ^, z6 `% T" f% Pjquery_create.php
0 j ?) s+ n& i2 Y; ?+ T( y4 k
/ d- c% ^5 \' z* R7 {- S/ C- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
' n5 n. m9 m: I# _0 a三、PHP识别二维码
n; H8 B3 i9 X) U% n1 ~/ a1、方法一, {9 v2 J) q+ @ L0 a2 c4 ]! o( u
环境需求,安装如下扩展. N5 ^ z1 m. [
- ImageMagick
4 b* ?' o6 v& u& i, I- zbar
1 W% A# s; ?% g+ l5 W- php-zbarcode" z8 h4 h6 h1 _7 j2 y% Q) R
! u' z$ o) B e
2、方法二
9 {$ t# t3 L+ C: d7 I0 pPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以6 Q' w5 [* E9 Z7 {! }9 x) h& A
qrReader类:https://github.com/baagee/php_QrReader
* _- }9 m x# [
D4 O u+ v ?9 s9 F
* ~, w4 F( ]& A' E: |' { i- $qrcode = new QrReader('./test_logo.png'); //图片路径
) w' v2 s; c) s6 n+ Y
7 [8 H7 E2 O) C* `! ^1 Q- $text = $qrcode->text(); //返回识别后的文本
# o1 x4 i% ]+ [. J) U
% c5 j Y5 B8 O/ O3 J" z- echo $text;7 v/ \' i7 o7 _3 o! C E
- 7 f( \7 y2 n- [9 G r
/ k/ k' b# L8 J) l, _5 j, A, M$ ~$ W
复制代码 1 k* E: W. m) P; n
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7- I( |2 _( {; E
( w8 p; T2 U/ O- D3 } E
2 Y% ~ s1 h5 h' a2 t1 f& Q1 @+ ^" ]
* D+ d: t0 }/ M
|* l c, f" e2 r
3 U9 r( f+ c6 f) J1 r' ?
# d4 c* x" s* c5 ^5 o! Y/ D
9 q5 j- T$ N: F6 y5 J4 J, I
# t2 O) I% O9 Z4 w Y W3 h
% V4 x C7 B( b, j$ r) { |
|