管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。$ `% t1 K6 S0 ?$ N, O( _
---------------------------------------------------------------------------------------------------
( m; z" O6 R8 Q二维码的分类
' X) @* |' N6 r, e. Z线性堆叠式二维码" ?# h4 l5 M& D, ^& a& Z7 n1 H! W4 v. d
6 z9 Q" M( W' a2 V) R( ^: D矩阵式二维码( t) t2 X3 N( Y2 J: T9 ]$ h* n
1 U. N( D* D4 V: c3 f; A二维码的优缺点
0 q6 U' ]5 @- _7 ?7 V3 e优点1 f. |. a+ ~1 K* p- B3 a2 Y
信息容量大" Y9 m+ x% L7 b& @. F, g: g9 O
1 g( a% ~* M& T+ C& ~1 V9 t
编码范围广
. d7 Q# y: A+ E1 g5 _% A. n/ h+ ^5 i: G) b" L3 d0 d
容错能力强
% Z4 ]/ s" j+ {9 @
9 `7 W( b6 Y1 @# U; C译码可靠性高
8 W; h3 W8 T8 A2 a. I+ U3 z/ V! R5 F( k' |/ O
可引入加密措施
7 n. G b) I, Y& A4 a8 w
4 l$ U- g: w+ v' w成本低,易制作7 k4 b0 E9 ?2 {# b& ^
$ u( b4 x' h. ?" L: Q( Y% ~4 B6 I
缺点
. A: @( j8 q& E, ^: a/ x二维码技术成为手机病毒、钓鱼网站传播的新渠道, G' D' K; |, Y4 \8 L1 g1 {
! C/ n% X0 P4 H. v信息泄密* a% I8 j: s/ \, [7 S# R! z
( p" M+ F$ R6 @目前流行的三大国际标准
+ w& h6 \3 K5 y( }PDF417:不支持中文( J4 g" A! o6 ]9 E: b9 Q) F6 ~8 Q
/ @( n# ?- C& h
DM:专利未公开,需支付专利费用
- ~' c- _1 e8 Z# g. [+ M- q
: n$ a, y/ g% E: b! N wQR CODE:专利公开,支持中文
+ t3 R, p! \, {' b& q. T
- Y# Y }* a. Z2 t* MQR CODE 纠错能力& O5 {6 U! ]) N9 X. p
L级:约可纠错7%的数据码字$ T1 v' Z' k$ m6 _# H z
7 Y! X. a8 D7 o, C
M级:约可纠错15%的数据码字
) U- @0 ]$ @, a! ~2 O
( q) _$ y6 s8 D; @) {6 cQ级:约可纠错25%的数据码字
9 o% T+ R( p- }' p/ Z5 C2 y/ n- ~) h& y" y
H级:约可纠错30%的数据码字! i, K/ q7 ^1 M# l
: N R' o' X$ }0 s, b# G, T2 W前提条件0 _% _; [: y, F: Q0 e& Z
GD库
) n1 C4 n, I7 l$ S5 d+ w1 S
^; u6 ?$ e5 {3 \6 L% Y一、PHP生成QR CODE+ Z7 Q- g3 T2 d/ _/ x X) t9 w
官网:http://phpqrcode.sourceforge.net/0 N/ C: J) A% M- m5 D5 i; w2 O
1 \9 U) _5 N' K6 l! C/ R下载源码:https://github.com/endroid/qr-code
2 p5 C+ @/ P% H: P/ _& W9 {8 n0 S% Q# d) a; s
目录结构
; C' {* Q5 @! ~9 p' r4 o/ L5 |( k
( ?, l- L8 M V
7 `) b/ c$ m$ i5 l
1、qrcode_create.php1 _# D5 ^ @) f
ps:生成普通二维码
: n2 m+ l" Y0 K
6 V8 S$ B$ q/ {' M- include_once "./qrcode/phpqrcode.php";/**
/ t1 T$ t* s" ]( g
T9 b: ^& ^. b X; r- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径0 g T5 |. L4 Q0 I
& s; K* u( ]! ^4 r$ w0 u- * 在浏览器上直接生成一个二维码(内容为abc)) X& r# X* [" H$ S7 O+ c
- . J! O/ q6 f) _% _) O
- */QRcode::png("abc");4 d7 V* `9 U1 J$ f8 P
+ m3 I6 i+ \ ]- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**# B+ u) b: X. k& G2 s8 d
- w# e& V9 v/ A' |- * 生成文件到本地
[8 @0 x/ L) U - ' E1 h B: q. k% i) k- G
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)3 `* z( M: J% ?
- 5 X* t& w- Y' e7 t" C) e5 F' U
- * PS:$saveandprint源码的p6参数做了修改) h" i) X% W2 W. C: B7 i
/ M3 [5 J' {2 N" a: r! J- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);$ r" b. [- X& [
- 1 y5 A6 S4 W$ b% J! ~, }) G: j
- # z3 Q" S' p: p
复制代码 . j3 E8 O7 U) _( U3 [( S( {8 K
2、qrcode_logo.php
% A z) o d- K' L, P: R5 Y6 Yps:生成带Logo的二维码
* Q5 d6 y8 u! z4 u1 Z% f- /**$ B& w3 s! p% `( j7 X7 I, y7 J
- & g2 u# r$ L) j* M5 {; r0 o+ J' {
- * Created by PhpStorm.6 f5 C7 ]! [, C8 O! @, \+ {9 j' W* m5 p% J
- - s: i6 x7 H6 V! [3 D
- * User: user
: W7 c7 R( { h8 n8 T - : z k& e; t# h7 _- s" u: e2 {
- * Date: 2018/8/16) q- }- x/ D* o% s0 P8 Z! c G
- & E$ m: |/ C, g0 T
- * Time: 10:43
4 a, c6 i @0 `0 [; z9 R - , f, |# O G& J/ [/ g" P/ d
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";! q3 R, S) t" W, w: ^% E, s' v+ L
- $ r s& I" l( R! ?: @; V' p
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称+ L( P1 E) r @6 D9 L8 X
- " t& Q& S, I) e" ]* M. I
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
0 [9 B+ f" [, f0 o3 [, C8 J* z2 y
: a* E( U1 q: ^ Y- $margin = 2;//边距
: Y. w" A% y# x5 ` - 0 [1 A' D7 B4 Y5 W7 _6 v6 J6 v
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
! l! T" N5 S2 R( B8 U. T
2 K& x: ]# m, L) g4 o, Q- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
& e3 w9 Y5 L- a. U
0 y' L" R# Q' L V# b; _/ o- Q- $QR = $picPathAndName; //已经生成的原始二维码图: p0 A- H- P+ N4 m( b3 H* x
3 {4 R9 d; K8 K: Y1 t( x- $Logo = './pic/logo.png';
, J1 i! q# m% m0 h- G& D8 R2 p
9 N2 `; f0 o; ]/ f- $Logo_re = './pic/test_logo.png'; |2 C2 z9 o0 S% x
- / c: b1 O" Q1 Y* S- z4 f8 U( O) P
- $QR = imagecreatefromstring(file_get_contents($QR));
0 o$ ^ n1 ?, }
- F7 ^' y. [/ h, T7 m) t: t- m- $Logo = imagecreatefromstring(file_get_contents($Logo)); v* ~& J! @% P: k: `& }
- . {- h. {8 J E6 W! a0 y. k
- $QR_width = imagesx($QR); //二维码图片宽度
" B/ @) N5 i% u# @! l
3 W H4 O! }3 v% |' Y4 ] `- $QR_height = imagesy($QR); //二维码图片高度
7 H; Z8 v7 r/ r- t- p" ~9 M - ! h4 T; W- v( `8 `5 r" ]: B# n
- $logo_width = imagesx($Logo); //logo图片宽度
9 M& |8 H' p5 S. r& C. b - . ~) L! _5 F8 s8 |' \% q
- $logo_height = imagesy($Logo); //logo图片高度" I) P0 F: y3 @/ n" j! I1 W
- ) r: l6 X: b7 T f y5 X8 R
- $logo_qr_width = $QR_width / 5; 1 C! f7 f, a; G( h6 o, K. Y1 t
7 M& W+ m2 E+ B: H: i( W' x$ s- $scale = $logo_width / $logo_qr_width;
+ I) C# `# y! x5 u7 M - 5 q1 _% d+ y$ O2 M
- $logo_qr_height = $logo_height / $scale; 4 s. y1 J# t! b n& B+ @/ k% g
- ; E3 O3 R. X8 W1 W
- $from_width = ($QR_width - $logo_qr_width) / 2;0 `- S7 c) c& F
- , h8 c! O- U# w! ?) k* w' Z
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); 2 P; |3 x% G2 H6 j) y
) {; w/ {) L" g1 t# V) b2 X7 {- //输出图片8 {8 G" |9 h1 ~( v" h9 ^
- . v3 l& M% H/ N4 ?
- imagepng($QR, $Logo_re);
! P$ T+ {) l9 S |7 V+ s/ U - / ?; d4 J8 p6 Z- f
- }
1 ?2 h, j( y* q s0 N _
1 }1 ]6 f/ P+ n4 f- 0 _6 a, B( F4 b+ K6 o. o
复制代码 3、qrcode_vcard.php (生成电子签名)
, n. m( S: f! h6 I- u4 i
. P+ e* f: C* V6 F" dvCard格式:https://zh.wikipedia.org/wiki/VCard
$ N# x s! K" p
. M- v8 t% @5 [0 P
( t: G# o' R% K1 C; _- * Created by PhpStorm.
4 h3 W1 y' X- v4 X* J' I9 f* r/ ] - 7 j% O0 P2 D2 @0 M' R
- * User: user" b. P) X5 x% C# g8 H
; F! U: I: x3 z9 Y5 R7 z- * Date: 2018/8/15
6 r6 _2 P* V2 Y+ l- E
/ s2 M* Q6 @ t7 I2 e- * Time: 23:00; e* \/ i& Y8 ~/ f: H) v* E4 }
1 p! l7 R6 L2 ]# H- */require_once "./qrcode/phpqrcode.php";/**
8 K1 ^& {( v- d& C4 e( k# \ - 7 h1 g( e2 b0 p1 a" y( ^( q1 S M
- * 生成电子签名& Q1 }) I' f1 [
- " R+ n3 o8 f6 p @3 t8 A" h: h
- * PS;使用微信扫描二维码
( Z# N# `2 ^7 @/ s - : e# @1 \4 w- h) B, V8 M1 o- r; P' B
- */$content = 'BEGIN:VCARD' . "\n";//起始标志! c" R8 r5 \" ]# S& z
- 4 {# T8 m3 E& c/ a5 o0 s' Z
- $content .= 'VERSION:2.1' . "\n";//当前版本" l/ q$ p+ w, J
0 R1 x% X/ S5 Z G. {- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名; y* L0 N5 k7 B* ~5 G+ @7 @, }
. ~0 V" b& f" U4 z5 }1 v0 B1 W- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
7 B/ y5 a3 W+ L - % z; }4 }" }3 Q1 k0 F. v( q9 ?
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
% {) G+ |! w8 I0 Q
; C3 S% a( U- y& u- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话( y2 O/ Z n* P/ i
, |. }6 y& c. z X% ~/ v8 F" l- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址# z. p. f$ j" i3 }
- 5 Z' T% [5 E2 p7 N$ S0 y# j/ [4 f
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)' O- R" O6 _: K" @
- ) k9 k2 r0 o( K. Z" Z0 N
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话- {+ }7 ~2 I B; O& A0 ]: _, V
- + X' z5 ?" j C ]
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱( [4 v2 C2 V5 _! m9 x6 N9 ~% _+ y
& t6 |: x! `" C- $content .= 'URL:www.baidu.com' . "\n";//个人主页- {9 r1 H; b, r# n& \ A( M) o+ m
- , g% `! S+ v8 F9 z! F
- $content .= 'END:VCARD' . "\n";//结束标志8 G0 \( X/ f3 z6 I0 r4 z) w" }' [5 R# ?
5 u I$ d3 g! `+ e- QRcode::png($content);- {6 f7 G3 S2 C2 Q: h
4 j* ?1 {- q/ O, i# q
. e" E4 S$ Z1 D( J" ~* |$ o1 |
复制代码 5 W- o4 O# c$ v
相关文章推荐:% Q8 V6 m/ j7 i) A3 {- ~
1.PHP生成微信二维码实例
6 X: }* G# I7 @7 f1 A2.php网址转换生成二维码
: }5 j6 o- K- P' o相关视频推荐:1 Q, k/ a+ e, j* Y& o6 `# B
1.独孤九贱(4)_PHP视频教程2 d& O2 ~% e) {( Y
二、JQUERY生成QR CODE
$ j; w* }6 N9 ]$ ~源码地址:https://github.com/jeromeetienne/jquery-qrcode$ L+ H9 t- t! `$ O
/ B- H& j; l& {5 W. A! {) `4 b6 f
jquery_create.php
; n4 ^/ _. T; {
: O4 E+ R0 X( x9 w- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 2 \( j# j) D. r0 c; a0 B
三、PHP识别二维码
; N. f$ {4 m7 T7 W. b! R) h: h. ]1、方法一
* z: Z6 @, I; r% ~& H7 h环境需求,安装如下扩展$ s( }+ a$ y' T: ~
- ImageMagick" A; c2 ?' X) a9 T
- zbar
7 U1 M; [5 `$ _4 t3 }" i) D- php-zbarcode
5 b7 M) n0 s8 H; @& y4 ]- O
5 X/ g% j) J e3 e- g$ P: G2、方法二- F8 a( W+ Y* {/ V3 R p. C$ t. C
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以$ a4 x- D0 q" t3 V9 Q f- O
qrReader类:https://github.com/baagee/php_QrReader
9 f! R3 Y( D" ?: }: c) l7 y" R+ ?+ F) n5 x7 b; L6 Z; m$ M
" X% v+ [: @, ^! |& \- $qrcode = new QrReader('./test_logo.png'); //图片路径# C. ]5 ~4 J7 F/ Z" `) m
# K. M8 {$ B5 f* ?7 m- $text = $qrcode->text(); //返回识别后的文本
5 q& i+ K' ]1 ?5 q, p+ t t
' x, {0 ?3 Z: n: }: @ O: U- echo $text;
4 U. o# W$ q0 b, y2 x/ S - ! U8 V* Q' N/ u# o- N" \1 ?
- # \1 e6 H8 S8 K9 a
复制代码 ' C; l/ q2 ?2 Z% z
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y71 J; }3 c$ ]0 w
7 G U) J. c0 J0 i/ i$ f) K3 W! l
2 r4 p( u0 ]. }7 v; j* d0 \0 t: J$ I7 {6 f0 V0 N e, H
8 ~' h- i# E- X1 T8 B' D |0 Q2 ?9 S" f; G2 x$ D: V) z7 I( N* Q
& Q0 n9 p9 a1 b
; l, t9 V# k) ~: E$ f
+ W# W: z3 p; P- T: J& P8 c
; k2 d! m, i0 A, J" A |
|