管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。" z+ P2 ], ]) Q$ V9 I
---------------------------------------------------------------------------------------------------
0 [/ \9 e) s8 t) s( Q2 Z- g0 p二维码的分类4 _: V5 q2 c" A6 X- Z" r
线性堆叠式二维码
1 q3 [$ s% {7 Q
# _" `. R9 `. e9 g; D; Z矩阵式二维码
7 M+ ^: @/ M/ e* x: ?1 W: q2 z2 R/ O, t4 j3 m% V
二维码的优缺点
4 _ @% y6 ]; M+ p# F* M0 d优点
. q. s' T# S0 ?! Q( \3 x* T信息容量大5 S& F% N1 c( d* i% F( W& w
) S3 q2 j; T& w3 c7 W编码范围广
& R9 C Y7 W# d) a$ p1 s2 M! E' i0 M* g5 g# v$ G* R
容错能力强
1 K- m6 M6 @9 W. S8 ^& e& D7 K4 I1 C/ t$ E
译码可靠性高. M" L* b6 H D! b* u
+ C+ v& C, k6 h; Q0 k
可引入加密措施
O0 t" [3 |" N5 T
7 q4 c5 } q: P6 M4 ~. `$ F成本低,易制作
* V: L) }+ c5 ?# a9 |+ p, C% c7 i: O* j
缺点
( N% S+ N! W, c- D5 b二维码技术成为手机病毒、钓鱼网站传播的新渠道, y# \1 T" I: i! W: M
8 _$ K* p. J% [ f& S" k信息泄密3 P4 i9 j% v% z& w; Q& T
) n/ x7 N7 T" H6 Z6 P5 y: c目前流行的三大国际标准
& `# r! [1 w6 ?2 Y9 pPDF417:不支持中文
) l3 y9 P% J/ w8 D5 d3 W* z$ h1 p J" z. ~6 X0 a. m
DM:专利未公开,需支付专利费用
% [ W, z/ K% }) o; \! C
9 s2 Y; O/ E, h' Z* }QR CODE:专利公开,支持中文0 X( G, j1 ?" j3 v
P, h, {3 Y- D7 @# s! IQR CODE 纠错能力
' @! l8 d' r8 j& g( H7 pL级:约可纠错7%的数据码字) h$ p" ]( v- ^* F
1 J" O% U' R, Y
M级:约可纠错15%的数据码字
9 V% N8 @" G8 d7 Q' |4 ?
; i/ `, b" h B, q4 @Q级:约可纠错25%的数据码字/ g% N' c6 y, U. k+ q9 }
( \ G# b, q S9 {( e/ aH级:约可纠错30%的数据码字% H# ]: s+ C2 i2 p! k, u
# {" b6 W6 }* \7 s, d前提条件. m: x* k2 t0 ~- z( i
GD库: E9 k$ A2 H5 R7 M; }; l
! f# O7 I/ e0 t, J* I
一、PHP生成QR CODE( S; P3 T0 a8 [+ c
官网:http://phpqrcode.sourceforge.net/
5 c5 Q0 }+ j# R O- k1 k; I3 ]" b" G, L. [+ r" K
下载源码:https://github.com/endroid/qr-code& h& }+ y; w% L X8 |& g; v/ |: _
7 e% h9 ~+ r. m" V5 W
目录结构
( I% X4 u1 j! J$ B
6 _+ ]" y$ r+ F: @) n! c3 P
; t2 e" t+ q; |% b* I" J! }1 G1、qrcode_create.php5 ~ L+ _+ B) U: r% G: |, B
ps:生成普通二维码
5 ?+ e5 J4 k; ^: X& P- $ o" Z$ _( m: c
- include_once "./qrcode/phpqrcode.php";/**
; ?% \1 h: y+ c/ J0 c, M6 J% u3 ?, \ - . t; D% q, c# w0 Z0 k% B- d
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径, k- i* c/ X! |% R5 V: d @
- ! ]( D2 r3 [$ k
- * 在浏览器上直接生成一个二维码(内容为abc)
- q, C7 m; W5 M7 K - ' y7 r; K# i8 f$ v8 c, ^/ u- F$ z
- */QRcode::png("abc");
& S" O' H; F2 m4 k# _8 [3 b
# k1 [" c" A! b- v" c& s6 ?8 e- c6 `8 X- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/*** L" K# ]8 W% N$ g. a
$ {- D$ n8 G6 U- * 生成文件到本地
6 m! V2 ?8 \( x* G: V
0 p5 `& {4 k0 `; s s- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
. r1 |/ n1 ]$ w- y8 T9 V) o
$ [) _1 c# C8 w& M2 z& ~3 q- * PS:$saveandprint源码的p6参数做了修改% `: ~& [. k% W# d6 `6 q, X) w1 T
- 8 k" j# G5 s, r* s
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
: Y' d+ }6 F2 ^! G) V: h8 ` - 3 T! o, E2 ?4 k' o
- % k" n( ]( z! P' w; t
复制代码 ; g7 X/ ] j, Y) ?/ r1 u! N6 d
2、qrcode_logo.php
4 d3 B# M- O) `4 C/ x( B0 Ups:生成带Logo的二维码- 7 c! R+ T7 b: O( M. X
- /**
; E0 W$ c+ g6 R r% K$ r7 H1 V
4 i5 v0 `; t: B1 m" w% x& m. o- * Created by PhpStorm.6 j, q1 B/ ^8 b* x8 I
% N( ]2 v$ F# l7 M4 W# E- * User: user' c0 H/ t; E9 z" E! C! E
- . \+ ~8 `: Q q- M
- * Date: 2018/8/16
! l5 `2 t5 B% _& {# D4 B4 @
; p; ?/ E5 \ c# | m9 _6 C- * Time: 10:43. U+ U: g; j2 D
9 V6 o7 a1 `; b7 _8 F- */include "./qrcode/phpqrcode.php";$txt = "测试内容";9 Q9 s- w2 N# u0 r2 l4 \- O5 K( u
- 5 ?# E9 F5 B! Y; J
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
7 i$ v. `5 P* U - 2 \) m% ~& F% T8 x; o) Z/ g" z
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是. G; p0 |2 _+ C4 L; Q
0 J" H- k, @) f1 _) X; A5 T- $margin = 2;//边距# {: v' G6 Z/ O j9 e4 p
, a" n1 `' N- u- c- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片8 E1 l' ?3 e/ |3 b3 N
- ; j" x+ C: b" v& X
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ 9 H9 r/ q0 Z6 h1 N: t% Z# Y' [
- % E" j& k9 K7 K, Z" m8 D
- $QR = $picPathAndName; //已经生成的原始二维码图' F; W E! Z$ M: Y7 n
3 H% Z- Q% u' v# C% a( ~- $Logo = './pic/logo.png';
1 \" C! | ~; e0 K/ [ - * \3 k J0 Y1 V& g& e; A- V1 L
- $Logo_re = './pic/test_logo.png';
; c Q# b( z# j; n! d4 U - ! N" ^% m7 }/ q# N3 ^
- $QR = imagecreatefromstring(file_get_contents($QR)); , s' v- P- {0 R# Q1 j4 }6 ^2 S- c
H& W! E: R" r7 M- $Logo = imagecreatefromstring(file_get_contents($Logo));
/ k! u0 `" N _ s& y; q( `/ H
- a( n# C* H3 d- S- $QR_width = imagesx($QR); //二维码图片宽度+ s9 Q/ @, ?( }
, s( Z0 E: |6 ~- $QR_height = imagesy($QR); //二维码图片高度
, ?/ }6 q& o+ A3 W/ N: x - , f& ]7 o* D' x9 ~: e
- $logo_width = imagesx($Logo); //logo图片宽度
, k; N6 x V. A - : ^( _6 p* l- J7 @: v
- $logo_height = imagesy($Logo); //logo图片高度# \2 c; |9 z2 L$ K% h; ] D
- $ X; a1 H# O4 U( t( r' J
- $logo_qr_width = $QR_width / 5;
0 J8 i3 g6 W- Z4 G4 q' v/ @ - / a& q$ ]% Z W* l! K9 {" Y
- $scale = $logo_width / $logo_qr_width;
, @3 N# ^) W1 H# Q
* F1 q" ~* m; C0 i5 E) a- $logo_qr_height = $logo_height / $scale; 7 A( a9 Y4 D* R4 E* Z& H
5 y5 s2 N3 |: L* r: ^9 U7 ~, h! a- $from_width = ($QR_width - $logo_qr_width) / 2;% I: S: B* U: B
- 0 G. Z: [# `2 H3 \7 E
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); / H2 ?7 I4 l8 U0 Y
- 2 P N4 k. K k$ D9 b) P: _
- //输出图片/ {7 _% W" K/ {3 p& [7 K. J
% W$ T) N- T' _$ N4 ^3 N7 j( V- imagepng($QR, $Logo_re);
' `4 L0 ?* A4 D, ^! u
, i7 q j3 [+ A" }5 U5 w- }1 M8 z' F9 K8 |& a4 B% ^) a: n
- 3 q9 h* Z! c4 S. L& `( m) v" q( F, ]
- y( f% T) c- ?2 q! H3 [
复制代码 3、qrcode_vcard.php (生成电子签名)) I. s8 X; S% u7 a. Z z
4 v+ X0 i7 f0 \) H: @vCard格式:https://zh.wikipedia.org/wiki/VCard
5 y( S" c! o/ B( R' J9 k8 ~* J" e' b0 z
4 C, { n0 ]$ X# K+ G" u- * Created by PhpStorm." w( p( b% t! b
- . ^2 \' N! j% V, C) g
- * User: user3 ]5 R5 Z1 k O. R, x+ l i# E
- . W/ c' i! E6 o6 b$ c% M
- * Date: 2018/8/157 D' s* t5 f3 z: e. r4 S
- " o- }$ c/ t' U( `
- * Time: 23:00
6 V6 a, {2 R# L8 ^0 a+ x - ( q" r7 J3 o2 ~4 E6 E6 Q) }$ @& t" z* h
- */require_once "./qrcode/phpqrcode.php";/**( E; g/ X3 A5 g1 ?1 V
- ; q6 t) D. [2 ]: U" q% a
- * 生成电子签名2 o) s3 S" x8 c! ?
4 ^7 X+ K# h0 U- * PS;使用微信扫描二维码2 O4 o& [3 P$ ?. y
- 4 {+ p6 A. L1 p/ N
- */$content = 'BEGIN:VCARD' . "\n";//起始标志+ O6 v9 F, ~& d( i6 k# `4 q& D3 O
- # {0 E' Z! Y+ _4 L5 g
- $content .= 'VERSION:2.1' . "\n";//当前版本5 g3 Z' E! s+ L* l3 g
( s3 g3 U6 K5 e! B4 o) d- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
5 d. f$ P: M- G9 E( C
/ [' o; Z4 j t5 G; }- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
) p) Z+ z% V1 g f; Z - 2 w) D& d4 o; P" I' M5 w
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位$ f6 g3 O; Q; z' C( n- d3 u
" X3 ?! i# o6 U; `- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
, Y! o, M: D; X; ]
: i' z: D+ ~/ i* g. r0 w( o- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址" [/ |, _ q B" C v) W6 i" b( L
- 9 M w) a* [/ u3 S( h
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
1 T$ n, Z+ v# O Q1 Q" [ - # m8 x, j! {* R, k. Y
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话5 [* K8 K8 F* p! x5 |2 C9 v
/ Y7 d8 A& f \6 r- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
/ \% H6 B. N; L( o/ f
) G# _- w( H7 b B- $content .= 'URL:www.baidu.com' . "\n";//个人主页
/ o7 y2 }/ p$ B: l( g' Y. O$ v - & ]0 U- w# E+ @: _4 O$ i7 f4 c% `
- $content .= 'END:VCARD' . "\n";//结束标志. q# f8 a! T5 B( `7 r# ]% w& {
6 N, y2 u9 w" Z9 R- QRcode::png($content);
- Z c2 `" j8 l0 b7 D) d - ! ?7 Q" P3 s: X- V! L7 p( N1 \! ^
- 8 J4 |# U. r% N |+ n1 u- k
复制代码 5 n# X; Y! G% n# c
相关文章推荐:* ~! H# n0 E! B- L9 @
1.PHP生成微信二维码实例
; {' x, V9 C! G2.php网址转换生成二维码
* v. {: ^; `; `2 U( v% |相关视频推荐:
/ y) i# v3 T' V, b1.独孤九贱(4)_PHP视频教程
; ~( L4 d$ o/ m K& {二、JQUERY生成QR CODE0 b7 o9 ?' k, P9 w0 t
源码地址:https://github.com/jeromeetienne/jquery-qrcode# [& [5 g4 @# r8 c; ^+ q' o4 ]4 j6 M
. G; b* ^9 L1 g( Z6 q4 `8 F3 ], Ejquery_create.php" W% ^: Z$ a( P' i( R
6 `* l7 i* }8 }' e* ~
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 1 a. S1 [8 Q. H* a- k/ e/ R
三、PHP识别二维码
7 [/ P/ i K* x) p1、方法一
9 [3 V4 C2 q" @3 \* D! `3 x环境需求,安装如下扩展1 O5 d! ]3 {+ I" q6 w# P% S
- ImageMagick u& _# m# r9 H$ s3 |9 m
- zbar
( U1 J# }3 J* H4 \2 Y' p( j$ |- php-zbarcode
5 ]' y/ T$ ?) {! \( X
+ A, Z1 c& K% B q2、方法二
( q# N3 _7 w; Y, Q" o0 V4 RPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以& i Z8 p9 B ?( o7 H: w
qrReader类:https://github.com/baagee/php_QrReader
! n2 K b' e1 B9 a% r) V, \
9 N1 x3 @# p( v. i8 Q1 J5 X2 b( s- / O u0 r1 F' U1 F( T2 C
- $qrcode = new QrReader('./test_logo.png'); //图片路径2 `$ V, h) Q* C* t# |3 P
- % C3 N4 F0 E! \# L
- $text = $qrcode->text(); //返回识别后的文本" ~( T9 b8 S1 |7 Q1 e
# M6 Q0 T7 C4 ?2 _8 O% C) r- echo $text;, _+ u! H( e7 I! d0 Q. z
4 E$ W6 a- @+ d: d. r2 A/ d1 @( w- ( {+ e, N5 f7 T" u, V2 j+ H6 L. V
复制代码
# Y) i3 Y) O W5 b! e6 q链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y72 O0 }% k7 G6 z' {: u: R4 T
+ Q: E- f" A: F. L+ U% Q/ i2 o
: ^; ?5 M, t0 h' A) X$ A2 Z
; T( |$ x; \2 E6 S
7 C" M" a- p1 z, {
0 A$ z+ u H7 D
, S2 @ l( h% x3 n
" s9 [6 a& [2 T, p3 L& n! G( G
R8 v8 w- H8 Y; b {" B2 j6 \7 n
! I$ T- v1 V, }4 t2 g |
|