管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
. n' ?/ ^# W8 u9 E# ^% |---------------------------------------------------------------------------------------------------! n# r& {0 k3 ^* r& s7 [9 Y
二维码的分类
2 p4 n) _% j2 d$ w x+ ^0 P3 u线性堆叠式二维码
5 l5 l/ n3 y3 ~0 Y, ~6 g
$ I4 g/ e2 M/ u矩阵式二维码
7 `: ~- d8 |7 ]' W* C! x0 f; K' j' j7 ], A4 h& M
二维码的优缺点' j/ G3 g* r% _ h# q% Y4 O8 o# @0 \$ n
优点2 |" A) r1 P; C: l1 @
信息容量大& B! ]3 Y2 t9 d9 s
1 p! ~9 V! N* \- e
编码范围广9 K @% r( K+ H. I# l
# F p) X' \2 n! Y1 @
容错能力强
4 c" p7 z9 N( |1 ?# p; G$ Q- g% k2 b. B' _7 {
译码可靠性高
8 }3 w3 q; h+ r, e5 o& D7 j! G/ d' w N) W, u
可引入加密措施$ F* Y# A/ s6 u* X0 v6 W8 O7 v
: C7 k: l; q/ B
成本低,易制作4 n& b$ A$ {6 d }4 S' H" H
" Z2 \$ n% Z0 T; A. Z缺点
5 R2 |7 o( F6 t! `) n二维码技术成为手机病毒、钓鱼网站传播的新渠道9 a* ? D: V5 B) w: U
8 d7 W$ h% ~0 s; Z
信息泄密2 g4 J7 F* s: \. T) D% P$ c$ M
# k8 J$ P) H/ G& x
目前流行的三大国际标准. i$ Z$ g% A! ?* F. l. N; t. x7 M: R
PDF417:不支持中文
6 x4 u, n- A: Z. L0 ]3 V( ~& x3 e! n
( q% [7 o; K* jDM:专利未公开,需支付专利费用
' m6 K* E3 N* ?" ]1 h, D# L
& F( q' o2 S4 U& h/ B* VQR CODE:专利公开,支持中文
3 q7 |& E- W1 Z* z+ {
5 h+ P7 f. }# ~) D8 Q. KQR CODE 纠错能力
- N4 H( P" z+ E( o; x dL级:约可纠错7%的数据码字
, v( D: a M! ?1 z" ^3 g
. r/ n) Q3 l6 r1 I6 j4 F& uM级:约可纠错15%的数据码字
* V" `% c! F. \. P, O) n" ~
6 m+ T, i8 e8 T% qQ级:约可纠错25%的数据码字* B( N! {' N: y9 ^. c
& l g1 N- B. l: |& z- A0 B7 h
H级:约可纠错30%的数据码字1 t. M4 [2 g; X7 G- W- z& i
; [( M, n! Z( _' @7 `0 N前提条件) ?8 H0 I) f# d6 H
GD库$ m# n' W" Y8 `# a* { \$ M
1 G) _% h' Q- c1 k( a/ L9 ?) w1 Z
一、PHP生成QR CODE# n* E/ H0 V7 Q+ P; A) [0 v1 I
官网:http://phpqrcode.sourceforge.net/- F0 e- T1 I7 }: ^) B9 x
, [/ M* x" c7 o+ D- C- J
下载源码:https://github.com/endroid/qr-code/ f6 E; I/ C3 C5 g
8 `1 c4 L5 x( I8 N# w" ~. ~) Q
目录结构
1 v6 T. W& |( k/ a7 U9 A
0 z$ v z+ A0 d9 b' b
8 F9 P9 c+ e% @. ^1、qrcode_create.php0 [% h \+ ~* s2 b2 S
ps:生成普通二维码! G, o$ s- e% ^5 f ?: H
- 8 M# e6 O7 w( @
- include_once "./qrcode/phpqrcode.php";/**$ x8 w, C- j; Y8 n' W$ j
0 l/ X, F+ a+ }' d" a- a1 X- }- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径, F. i& @9 T7 X% R; r# A
- 2 g( P5 J7 n) A1 T
- * 在浏览器上直接生成一个二维码(内容为abc): ^" W n6 p- J) ?+ u
- 6 @ N5 F% }2 b3 X( [ q2 e) b5 L
- */QRcode::png("abc");
- F, w) v5 l7 W, s0 n, u' E - & o& S& v5 J5 C( ], ?
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
3 S5 @) _0 p' ?9 \. I - ; k' q8 n4 l. ^! g
- * 生成文件到本地
$ U. @" A' ]3 U- i5 ~
* @$ e1 I$ \$ ]: a" n, _7 h! O+ @- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
6 F3 c+ H8 b3 H( h7 v - ) e5 F2 s: X1 u" B
- * PS:$saveandprint源码的p6参数做了修改5 W9 p- }% O; P% X
- & m3 D( a4 ] j$ N1 i8 h p
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);4 I& c; ]6 U9 H# u, f8 V& S$ [" S
: t# H* @6 r- I2 x- # O3 d8 i. g) U
复制代码 - @5 _; d( ~3 y
2、qrcode_logo.php/ U" S1 h% z1 Q! v( P
ps:生成带Logo的二维码- 6 h: K {. m4 C) g! q
- /** \# k% x* N( |5 M7 N
3 ?' ^- G4 {2 e- * Created by PhpStorm.
% D( e5 y+ n* A S( Q' k, J
, j% I; r' B2 o+ ]" y0 n: h _- * User: user
" F; y/ K8 D) M) E/ ]4 |) u" M
( t: S) z' l8 e6 X2 C0 ~3 j- * Date: 2018/8/16
* O8 O/ |3 l9 k. D7 ~+ `( l - ( u8 {. [/ {* w+ M7 G& H' E, e
- * Time: 10:439 n& d* P' N7 V9 L v/ X5 C6 {
- # ?. S- v# y7 | H* O5 H
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";
- F1 y$ A8 K- i! N
& L0 Y; a+ `# Q- ^. H( A' F+ j- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
( ^, D7 L9 E4 g0 O# }( o/ V3 Y - Q+ q: p1 Z7 O. g) N
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是; ~6 \: j! X% D0 _1 m( v
* P& s& ]$ W5 ^, s- $margin = 2;//边距
4 \8 C/ V( h+ X9 M
8 {0 V$ v3 X( P& L- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
: F4 M! W2 K9 B, L& _( i# _8 q0 b3 O - , V: X7 T. e1 P
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
; Z% x& l) O( s2 ~
- @8 K% t. @$ R K/ c% b- $QR = $picPathAndName; //已经生成的原始二维码图
6 u6 s6 m! Y( q# L
. H1 |1 G& z( ~2 u3 N' D/ x8 M: S- $Logo = './pic/logo.png';
7 L. e( T4 ^" P7 [! I2 C9 _
& k* E! n( m9 W% g- A- $Logo_re = './pic/test_logo.png'; 5 j8 r6 l5 X. W; K) R# k( {/ `
- 5 A l$ E$ [9 L1 v# D3 B5 i
- $QR = imagecreatefromstring(file_get_contents($QR));
3 o: v2 D' l0 l; A! ]; C2 A d
% K1 }0 k4 Z6 i7 w- $Logo = imagecreatefromstring(file_get_contents($Logo));
! N4 F8 _& o1 h6 Q: }# U. t - % A/ D7 f0 T5 q) O8 x
- $QR_width = imagesx($QR); //二维码图片宽度/ A3 ]9 Y+ k1 {" F& d
# w$ l [8 q1 m% D3 z$ `- $QR_height = imagesy($QR); //二维码图片高度
5 N- T; C! J9 a. f8 `8 w
2 ~% z U1 E4 ~ A5 j5 K- $logo_width = imagesx($Logo); //logo图片宽度8 G5 U# z" {2 r% m/ k% L% U
& n7 a$ H' X! k- $logo_height = imagesy($Logo); //logo图片高度
4 K# G. Z8 e9 t; |; _- L - 6 y! o5 a. K& n' p8 O+ L
- $logo_qr_width = $QR_width / 5;
4 O, l0 T ~: Q S/ L - 1 ^7 C; R5 X% {; ^8 H4 }; n
- $scale = $logo_width / $logo_qr_width;
; N6 [" A L: _# F. H+ O8 b
% X. a ?) o9 Y! {7 }- $logo_qr_height = $logo_height / $scale; 3 Z' Y) g' F; s0 B4 E5 A
0 C% p. ?. j, W7 t8 }- $from_width = ($QR_width - $logo_qr_width) / 2;
1 e+ ]& `0 r+ x; r, l- \6 z - : @' D. D: L' j: P0 o+ X
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); ( g) R; ]) s# ^% C, O% [; V/ q. T
- & @0 J0 H$ h6 Y1 R! A' j. h
- //输出图片
- [7 O. Q r% s3 A( J
1 w- g' ` X. e# L4 \- imagepng($QR, $Logo_re);
" i$ R; |4 y# U7 G - 6 V& N! V" C7 n# K- ?- x
- }6 Q$ O8 y% V- T! e% X
- 1 X5 s5 d2 A; [: E- d; p
- ( [% C1 {1 K0 x0 t4 l9 P! j
复制代码 3、qrcode_vcard.php (生成电子签名)+ o. C/ b& L2 b% v; p* Z
$ W7 R9 |% I" [# b: l
vCard格式:https://zh.wikipedia.org/wiki/VCard3 t8 ^# @$ M$ }: e( b& V
2 P* \7 n& Z* }/ t( p* {
$ s5 ^3 u* e/ Q- * Created by PhpStorm.& g/ H t( M! J, u% n# g
- R: D) }7 K+ Y- * User: user
( u" h! T, k7 T) y/ j - * `/ R# f+ o+ ?! s
- * Date: 2018/8/15
6 m3 q& h3 l% Y+ [6 ~& X- i1 c# B% {' c - & o; U+ J8 _. D7 X
- * Time: 23:00
# ?/ t' X. b7 K - 7 U$ T6 X: H2 l: O
- */require_once "./qrcode/phpqrcode.php";/**1 [) L- ]& o/ N/ X5 A
- $ L. T" J, v1 T0 z0 l
- * 生成电子签名5 X; b/ [% l' `# s( d) M8 v) R
- + E2 R, ]$ X n3 j; O6 {
- * PS;使用微信扫描二维码
2 U) m0 G3 D# ]- E3 A - ) j+ D( W8 w1 [8 j+ J
- */$content = 'BEGIN:VCARD' . "\n";//起始标志* b1 E5 O9 `* s7 S* J. s
$ T7 E% G3 k( S( F5 y- $content .= 'VERSION:2.1' . "\n";//当前版本. n7 T# V8 M. ?' p0 E, s. Y
6 o, a) k9 V( F5 N- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
* H( ?' e/ F/ n8 H2 R+ j; H/ D0 V - 9 R! q1 L! k0 Y" G6 _
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称$ F8 G# m- j" ^5 [6 F* _! ]
- + H6 x- T! s% N# L) K# ~
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
; |9 g1 [ g0 g# W9 r& w. M$ c' f+ V
3 l1 @; f* v1 c, c" U7 }- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话% B6 `9 n8 u: j8 t* L2 M7 p+ m
- 0 D5 V8 h5 `5 `9 N/ X' E( a+ D- p
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
5 ~$ f) e4 F# @# V$ W9 m
/ d. V1 z" N# L6 f& Q6 z' a% B- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
3 H0 Y; j9 a1 _/ T% s - & O, q8 s; h7 @0 o. s+ a* S! q
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话1 q; a. z# Z: p" j. G/ }- \
- $ \' F, O$ a, h; s9 p/ b
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱: a S, n* O* ]5 C% p0 |1 \2 I
- / K' T; a/ Z" M! Y
- $content .= 'URL:www.baidu.com' . "\n";//个人主页! v/ R7 y# ~+ L+ l* @9 d- n
- 6 }' ?7 J. t3 B, ~$ P6 y) I
- $content .= 'END:VCARD' . "\n";//结束标志
$ p! b9 T1 b* W4 X' a& L
5 B& ~- r6 v3 N: l- QRcode::png($content);* j! q- d6 c4 G. n' T: b( ?+ {
/ f6 ^3 J' Z% O' I: t! [- ' [$ m! r) j) o
复制代码 ; A# q, I* }3 j
相关文章推荐:8 o8 G) V. [& R3 d- @
1.PHP生成微信二维码实例. P# R# G) ~8 u9 S
2.php网址转换生成二维码5 P, W% c% ], h: ^+ I
相关视频推荐:
/ z" y' _, n: `! x1.独孤九贱(4)_PHP视频教程
. X2 N7 @8 I( A0 f/ o二、JQUERY生成QR CODE v0 N2 m$ ^ ^5 B! w
源码地址:https://github.com/jeromeetienne/jquery-qrcode+ t5 j+ `, P, U A: n; B
) ~6 Y1 K) s9 ~) u, j
jquery_create.php# l& z0 I5 H' E: f3 J3 q* f* J
$ Z1 h/ Q# {- f, ^9 h3 J4 M- U. ^1 m
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 ) Z5 a# j* Z, V9 q
三、PHP识别二维码
' U0 r- v3 h( d5 R% E: V4 X# t1、方法一. t d8 y/ r6 n- `# l* o% Y
环境需求,安装如下扩展
l" n3 r% F# Z- v- r, T5 l3 y8 z" R- ImageMagick
* i* b$ l z. [* v- zbar- s5 g0 {- B, c& e( T# j# G
- php-zbarcode
' e; [/ D$ W7 O% |7 Y
7 a# w5 d! E& v# P+ O- y2、方法二
: D. k9 @3 |$ w) EPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
' C# X) m. P2 ?: d6 S0 @qrReader类:https://github.com/baagee/php_QrReader2 `1 l/ z7 p- N+ |& U7 @% J9 K
; |% y$ c0 _2 x% g, s: H3 G4 q
' ~8 Q/ y6 j! Y( m, U* K8 f5 X' H- $qrcode = new QrReader('./test_logo.png'); //图片路径& P$ N/ L; P$ q" M- H; R; b
- 5 w; O2 U: ~( D( O# q# |- b9 p
- $text = $qrcode->text(); //返回识别后的文本1 X0 v/ e0 X1 r/ W: R$ ~$ A3 S
& y; \2 z( L5 K! E( Z* n& w- echo $text;
0 w. ?: R, x- ?* J: U
$ j3 b/ F: t- I/ \
( x3 e( i) e0 s9 v& x$ q
复制代码
% x* Y' y; ~# ~链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
+ |- P* V) ~5 W1 Z0 F
! Y- q% e2 N$ Q8 H5 s, `
" `7 U0 w2 _! J' R# I" D7 f: b. g- }9 ? S! j
, F7 K% t! G( ?) g! `
% K% s! D# Y; Q- v6 Q; g
+ n. g- h- k* J" U/ i; S; Z
* A! s. E! G! G0 B' S
, g! e) t. H) d0 Y2 f4 K
V) C* Y' T2 m) _" \9 D5 O2 N, w |
|