管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
& M4 Z$ I5 k3 P: c- _---------------------------------------------------------------------------------------------------: p/ @) o) M4 t
二维码的分类
* ^) Q% ], m( N线性堆叠式二维码
% b: E% ?9 L5 W
/ L( |6 S( ]( X+ K/ y0 T! E矩阵式二维码
& c& n, |* K5 p1 P s( m4 M6 O+ N% B
二维码的优缺点
; i+ ]3 a+ h8 B# D! T/ q( G优点
2 b' H0 j; G7 }# C K信息容量大
3 m0 Y9 [. ?: }, C6 D6 l9 }; z7 l2 F: }0 o; [5 Y6 O
编码范围广4 a. u6 |0 X- b7 \2 u
. e2 x/ h* I/ r* i$ ^" ^容错能力强
9 K: d6 ^& N7 Y% D& J; N# P' U, }3 ?) Z2 j$ \/ ^) P0 ^
译码可靠性高
/ [4 T" G3 k2 r* T0 d3 P& T* w% n9 ?
可引入加密措施5 e& W& M9 }" \0 P/ c
0 |! P/ A2 P6 Z8 ~( U9 y
成本低,易制作
: w7 N' F* r0 Z: _( c; E' Y: m) z( |+ L
缺点
7 W+ b6 S6 P1 R3 f* U二维码技术成为手机病毒、钓鱼网站传播的新渠道
, G& [( P6 J3 t1 T! I4 N# \, g' t( E: V' s0 x7 Z* m6 e
信息泄密
( P( I/ z9 j- B/ H" w0 l) F) Y, ^. \
目前流行的三大国际标准- @4 s. R5 p* R' E
PDF417:不支持中文
6 N( b. w8 W% V/ J4 v" ^( M) E& i4 X1 c* ~% @5 ?
DM:专利未公开,需支付专利费用
0 [5 u- n, c& O( d! \1 @3 |* I a1 x% v) Q
QR CODE:专利公开,支持中文
! N% e; M6 Q- n1 Z9 i2 G& n* I8 I4 l1 c
QR CODE 纠错能力8 D* m# v' a+ _& L
L级:约可纠错7%的数据码字
7 ?0 T: H$ | g M! A' e: O
. f8 d5 V: a9 I4 c% _M级:约可纠错15%的数据码字
0 m* ^6 O' s+ _6 _' ~
. N7 P* l3 t- t& U5 \( p% y4 H' ^Q级:约可纠错25%的数据码字0 b" O& N+ o' [) a
, U w' o* I5 y4 y- `" r
H级:约可纠错30%的数据码字3 o9 I Z5 n; T, S- _! Z
2 ^( M% g0 v$ {0 [% s前提条件8 ?2 N$ N1 Z: \
GD库
* K3 F i7 V" M5 z8 p
& R7 H0 t3 r F2 y一、PHP生成QR CODE
1 Z, o% |; q, I! \( F4 O; V官网:http://phpqrcode.sourceforge.net/5 K. f% i) Z' f) X
5 M/ A q$ H- b2 y" Z下载源码:https://github.com/endroid/qr-code
: e4 f/ }1 w- v! `* y2 D7 _" U. r1 X
目录结构/ A( P1 m$ R1 p( L6 b
* ? R$ E( t' j7 P; {: q
: ~0 ~8 K$ S; ^4 n+ b1、qrcode_create.php
. m1 F4 w9 H7 d6 I& n2 g! dps:生成普通二维码- ~0 w `! C% G: i6 {
- 4 M5 C, N# J+ d3 r! U1 M* k& T7 J
- include_once "./qrcode/phpqrcode.php";/**: F, ~8 z+ A( K* n
- - [( y) X( q. j
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径 |+ L+ x# v. k" s* d
- # z, _ e8 B1 p2 L: f
- * 在浏览器上直接生成一个二维码(内容为abc)
9 @: j* d) P9 x3 N - 4 ?8 s, a C2 a( U! i* o8 t
- */QRcode::png("abc");' D9 l2 p, t5 n1 A& G% D9 a
/ k. W: g2 r! a4 E1 H! z- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
3 S& s$ }- G: p+ ?0 M - 5 K" V x. y$ F
- * 生成文件到本地1 n9 N- r; F! ^4 [; d% G
! ~0 O# m6 [+ Z5 w" V- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)! l' T% a1 ~1 i9 n
+ g- C ^" ^) z- * PS:$saveandprint源码的p6参数做了修改2 f H; C) y+ N, ]
% w( g3 B( m. W* o, {. Y7 t' I; J- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);* l/ n% f$ H3 w b2 p8 O) Y
N) J7 a9 e/ z0 ~% }2 b
" z0 _8 G3 _1 r
复制代码
! Y# @/ f4 a/ f$ j2、qrcode_logo.php
: r3 ?0 u* l# t, pps:生成带Logo的二维码- ) \. [- N& w6 v& q
- /**
; t' H$ y4 ?8 o+ B
5 v2 z P( a" F: R0 N( ~5 r$ V- * Created by PhpStorm." q, E1 V2 g1 z5 G$ H3 M1 e4 b
- & q: G: J, z6 J/ F l
- * User: user8 S. S& z8 @! q5 b9 z
- $ ]* G; Y. G2 s& t5 T2 m# c
- * Date: 2018/8/16% z+ Y% R' z) l% a0 P& y9 \- O
& z6 b! b% e1 g" Y9 N& ^- * Time: 10:43
& a8 I, K* E# }
- l v9 }" z$ M0 ^) X$ a" y& d0 W( J- */include "./qrcode/phpqrcode.php";$txt = "测试内容";+ x1 _; C" s9 S, r
7 y Z3 R4 g$ w- X v/ o- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
/ q, f' m: r v) [; k$ ^/ l6 H
3 b! G& s% r( h3 ^& k3 B- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是' l; f8 `8 r Q7 `* k
- / N% [) u4 Q0 V# K
- $margin = 2;//边距
+ z, c' ]1 f0 J- r$ K - * F9 ~/ M l8 L8 ]* ~
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
9 S& U% N+ h( L. G+ ~, b* g - 1 {! N& E- J1 p4 W, t0 _0 Z' w' ^0 `$ o
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ . [* C9 i; ^, N
- 4 m8 |/ Y2 ^- n
- $QR = $picPathAndName; //已经生成的原始二维码图+ [) J/ ]3 S3 W# }, f
7 k& }! A+ j4 t T9 p1 ?- $Logo = './pic/logo.png'; " o/ X- v8 W0 J% h3 y' E5 d
- - G+ R8 L& ]7 p" V) `" x) i5 z
- $Logo_re = './pic/test_logo.png';
4 a0 \7 c9 x/ l' M - 0 a7 o. X5 p* n6 o: i
- $QR = imagecreatefromstring(file_get_contents($QR));
1 a; t7 A, u0 \5 D* Q
6 [" n# p: ~4 W8 ]: u2 k3 K- V/ P- $Logo = imagecreatefromstring(file_get_contents($Logo));
0 n% W, u3 K! x- L1 L* A - 1 x! \$ m8 W. b+ @
- $QR_width = imagesx($QR); //二维码图片宽度
3 J- |5 [, J8 t+ E - 1 ?' ]9 N6 V! }. S9 M* x' X
- $QR_height = imagesy($QR); //二维码图片高度& L8 K t1 @7 }$ K2 s; Z$ m0 V
5 W9 t( ?) O& _, p, E$ U- $logo_width = imagesx($Logo); //logo图片宽度
7 w- F @! A' u: Q - , f- ^: w/ w- j1 n6 a2 r. {) C& g9 w( `
- $logo_height = imagesy($Logo); //logo图片高度
8 z5 g# e# f% t6 R - ) Q4 a6 F, J: Y* Z
- $logo_qr_width = $QR_width / 5;
, L, w$ d3 d: O/ w
. I$ f6 x- s- m- $scale = $logo_width / $logo_qr_width;
3 F9 y$ [7 T6 D. I- G6 Y2 N - 5 d+ `$ J# H% n/ C
- $logo_qr_height = $logo_height / $scale; 2 j w: ~: d E- }/ s6 u: H/ ?: l
- v) v5 a: ^: X- $from_width = ($QR_width - $logo_qr_width) / 2;
% O6 ]( @9 r H3 J& J3 w - : F J1 j3 h$ t0 z9 r
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
$ n2 d& a% z3 N ?( }
* K/ z8 ~8 l- G% @; k0 S$ w- //输出图片. n8 c& _0 w' z
- ; S* F: m: t9 @" {
- imagepng($QR, $Logo_re);
. q7 v. T7 q; r% I3 h/ I
+ W7 { X8 G- W! i2 ]# N+ x- }! H1 D) i$ Q( p- a1 h3 F
- # } @" P* O) h- Z8 ]7 W
- + H8 q/ z! j. Q8 ]$ W+ p
复制代码 3、qrcode_vcard.php (生成电子签名)9 [6 x8 Y# E r/ v+ `
1 o& q. x% k8 D$ EvCard格式:https://zh.wikipedia.org/wiki/VCard
9 }0 U K3 P0 `+ N" h# n6 M) w5 x' K; i9 }* Q$ k6 o
- : |6 [! }" S2 h) l
- * Created by PhpStorm.
. c4 F+ c& ~9 [' D
5 ]1 _" b% N4 s( J3 k- J- * User: user
+ j2 A3 L% x0 P& H3 w
3 c+ W+ {6 Y$ B( j5 o- * Date: 2018/8/15
6 H$ H7 p$ L1 _9 `$ r! f+ r
1 J. J7 H3 N5 ~# c5 c- ^/ ~- * Time: 23:00
% d$ D8 K8 J/ d) S - . H# D' o( y$ ~' w' b- ~! g0 q- T6 Y
- */require_once "./qrcode/phpqrcode.php";/**
9 l* i8 v- L7 Y$ U" G3 [
* ]/ o7 l/ v( s9 u- * 生成电子签名
) D! n4 W" \9 N& n' |- q( e
1 V( d* W0 x4 J6 n4 H$ b' t8 ~+ M# E- * PS;使用微信扫描二维码
. p% Q' v ?7 u) u+ N
. j/ _5 I" z( h( B- */$content = 'BEGIN:VCARD' . "\n";//起始标志; T4 P8 \- }1 g+ H8 E5 r+ s: t' |4 l
- 1 O' G& n& o3 t
- $content .= 'VERSION:2.1' . "\n";//当前版本9 S' j/ w* N' A. Y+ p$ ]
- ' I% \7 i) D$ s& p
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名/ C5 {% E4 h- @/ d: y
1 M/ a1 Z& [. u! a q9 ]- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
2 x$ S8 W$ o3 U/ W8 A
9 t& [4 u7 R+ @! ?; _5 ~: n- $content .= 'TITLE:PHP研发程序员' . "\n";//职位: t+ D- Q: D0 t J9 W: i4 P
, `, X" Y f! z- ?4 \( l- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话2 P. h& d2 X# q) _
+ s7 t* r o) g5 I7 D$ z- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
6 w, C# G# g2 H
6 x1 R( E) b: R# \" j: J2 Y K: w) L5 \- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
?; e. \: n7 B7 K1 r( Y# f - $ C6 d& P' n" L
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话* b* D- `& F3 L$ A
- % b" J& d0 _/ y$ U$ D h
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
; U, X4 O- ?: Y& E
0 c# H) k) L) e& [' K- $content .= 'URL:www.baidu.com' . "\n";//个人主页+ D; M: C0 [2 j5 Q# `- J$ g& n; z; V
- ' Z2 `. Z: O# _
- $content .= 'END:VCARD' . "\n";//结束标志2 Z2 f1 J9 e7 ?* {/ q8 u
- 0 V: L. k- J Q3 \
- QRcode::png($content);& D# n! \5 L8 o6 D" ^& K) d
- ; \# N% ~- D/ J9 u4 M1 y9 X
- 6 y, z+ K( Y4 O( T4 S2 r: V
复制代码
9 q" Y+ D$ S6 e6 C) W; K相关文章推荐:
% a9 B$ V" b0 S. W) J1.PHP生成微信二维码实例
/ J+ n u8 I( H2 X$ S2.php网址转换生成二维码
* ], x! G+ i( \2 K相关视频推荐: w* U s: n; c9 n% g1 ?6 z8 `3 B3 G
1.独孤九贱(4)_PHP视频教程6 o$ f3 m. c/ e( a: r
二、JQUERY生成QR CODE
4 n% ^6 G9 d2 }0 l# ]2 p% B6 e: [源码地址:https://github.com/jeromeetienne/jquery-qrcode* \; @( P0 s9 x, ^5 K _3 n
' s1 P7 T! V# S8 K" D" P6 E' g! yjquery_create.php
# H5 `* ]5 S/ z% ]3 V F7 @7 h' F% e
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
/ Z, \8 a. f8 Z) \8 V% x三、PHP识别二维码
, l4 @9 _) O% j" c# h& s0 |, e1、方法一
- Z. i; i. r6 i环境需求,安装如下扩展% t% Q( P+ c3 T0 h; e" _. d
- ImageMagick, ^% h' M" W6 r9 U) F0 j0 p
- zbar
" {5 Q! O, x6 t# u, U2 y: c* h% {7 o5 P- php-zbarcode
& W p. Z# C8 P, ^8 A' u$ e7 e3 g; ]" z+ [2 Y9 J& U
2、方法二
3 A2 @6 G' j0 m1 OPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以, Z- z( c4 Y D' \7 _
qrReader类:https://github.com/baagee/php_QrReader
$ s1 Y' q7 e+ ^/ ]5 q1 v H4 k2 O3 y5 X; \. }; ~
- * }$ L- [! h) X5 |+ R9 |
- $qrcode = new QrReader('./test_logo.png'); //图片路径4 U$ N0 Z3 R6 v& W: \9 L
- 6 J. ?4 K* \, v( i, Y
- $text = $qrcode->text(); //返回识别后的文本
V& T9 m6 z9 M' n- h
. d; d' D5 H4 y$ m# w- echo $text;
5 G- w3 M, N' W8 G( o
8 g b5 c" }" B, a: @ I3 t
1 I2 Z) v7 V. F( J: _2 i
复制代码
0 X. Y A# g. X5 A- Z$ A: Y. p链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7: B% A. [% F2 g# f* Q5 g0 z; v
5 N1 T2 ?! ^2 i; R, D+ q r
( D$ Q% {7 y0 S; V3 T, I/ h, F* V- {0 a7 c6 [
: S; R9 |8 H% s9 I, D4 q H1 R
7 B7 C, b- ^% Q2 p" L! q1 I
, A+ l) z& U" `" D- B2 F0 E$ R% x
: n, J/ X+ i. X- Y, H& E
& F6 j8 O, t0 j: A+ g. [
C" x6 y' {1 ` |
|