管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
1 l* _& b# F$ T---------------------------------------------------------------------------------------------------
# V8 @7 ~' q7 K二维码的分类' z. M. y4 {8 S& p7 _, Q
线性堆叠式二维码
& F- H, R8 T* y8 z4 ^
' \7 A& Y1 c* s/ \0 x- c矩阵式二维码
9 o! i2 b3 B& `) ^% F
2 p. i" q1 V( V二维码的优缺点
) Z- L3 D! S: _' d, {# ^1 ~# S优点# o0 D% r3 c8 J O# b9 p+ x$ t
信息容量大
& s- B0 b( m6 Z" u- `. k# y* j+ C( C: |) P: Z0 D c+ G/ q/ J
编码范围广5 D$ N3 ^% a P# X+ Y( b2 b
' @' X' v3 Y$ E6 Q x
容错能力强
' c/ l2 D N" f5 A9 Q$ o5 R/ G% _9 M( M1 c0 R8 `
译码可靠性高
, d) Z$ H8 L3 K& N& c4 z; g5 T, Y$ @
可引入加密措施% y$ @8 B( |9 R n1 r O" n' Q3 o
u% O: k7 K( G! `. I成本低,易制作* f* S6 ]: o3 O/ o) D, l
7 [ j0 W; b; I) A( q4 x缺点* j7 _) C! P# i1 U" o* c1 c# A0 D6 x
二维码技术成为手机病毒、钓鱼网站传播的新渠道 a% g0 h, B, z' p/ q( z( n" M
; ^! o" i! z( R信息泄密/ r1 G" O1 A) n7 u# a
) P7 s7 Z4 N# K目前流行的三大国际标准2 k8 y; b0 m: Z* o; y; c4 d
PDF417:不支持中文( [, a* Q: e* b
) {* _# q9 {2 @1 x2 q0 W& a
DM:专利未公开,需支付专利费用
- b- [$ r; A7 _+ Z! s4 R! E1 l6 a$ q( }" M2 Z% ~5 g8 E
QR CODE:专利公开,支持中文2 _+ r S( w Z) M8 v9 Z. Q
% w' K z7 \5 P
QR CODE 纠错能力
7 R* ^( t4 P, z e2 K3 z% ]L级:约可纠错7%的数据码字* R8 v% q, D) L( C* x( M& o
. V6 A( ?2 k2 eM级:约可纠错15%的数据码字/ N Z; c! P* d; ]5 s5 \
5 r' b' q& C6 B8 m( V+ ?7 y8 Y4 Y8 d% @
Q级:约可纠错25%的数据码字
( v, k. q1 m9 \1 K/ q6 _/ k, C" e& Y: i: Z2 c' T& o7 p& e
H级:约可纠错30%的数据码字
# V# `/ ]+ R% s1 Z: K# x( J* d# v" q( D: q! V& b
前提条件
# b( M' ? H# \7 E( {GD库
, |& ~! M, [9 \
2 i" `; T3 r! B, S. h# f, [) I `& q7 n0 u一、PHP生成QR CODE
3 @5 Y* X; H% `+ p6 }8 R官网:http://phpqrcode.sourceforge.net/" E) e, e# D2 _8 W# {
+ [8 I9 J: @+ o7 M5 |- N+ r) V
下载源码:https://github.com/endroid/qr-code
1 i4 u, p# W" H G
+ ^2 l- g7 z6 y8 \. e目录结构5 Y- B# {6 Y* Z
F" {1 b1 W& _5 K' |8 F7 D2 T- K% H, A9 H, y
1、qrcode_create.php# \4 ]- j4 G& E6 K4 Y: ] p# Z/ T. n+ Y
ps:生成普通二维码
# R7 e; x7 h6 v7 h/ \- @ \( h- $ L; i2 z: e" g Z" a8 p
- include_once "./qrcode/phpqrcode.php";/**
6 \1 C: c- ? J* f6 u3 c
( @4 c) d2 D F) u- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径& n% A$ G! {2 }% `! p# V! b& X
# d9 Q+ Q7 ?; M e, [- A; A- * 在浏览器上直接生成一个二维码(内容为abc)
3 p8 q" m1 M) v1 | - + ^1 L3 b! Z: l \/ L4 |) M. [( ?) M
- */QRcode::png("abc");
( k& g4 h* d+ ]1 j$ r7 s
# c) w% X3 E9 |: E7 \" R- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**- j3 a9 ^- L: I! F) Y X
- : K& o4 X) O. c4 ^& ^0 @& Q/ _
- * 生成文件到本地0 G. f2 W* R, W5 K3 D p' ?( Q+ X
- 5 g b! Y5 W* M a
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
5 `" a1 H9 b# Z+ Z
. E/ M0 c+ J+ l3 d/ S- W$ Z1 Y& `- * PS:$saveandprint源码的p6参数做了修改
/ z+ G7 ]' S( w; J% E8 W - ' N+ k; R/ o' T# O( n" p. b0 w3 b
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);/ `, M2 c( n' [
- 8 Y+ E$ b& [- A6 l; D+ e/ C* R: u
2 R) j9 r# Z3 I$ q
复制代码 z( C6 E6 r* Z1 N( N0 D
2、qrcode_logo.php
0 E z* T2 p& nps:生成带Logo的二维码- 3 e( V @8 ?$ W% n' O1 J
- /**: Q0 D8 C' Q3 F& X
% m h- x& n5 C0 T7 j4 d4 l- * Created by PhpStorm.
' S8 p4 L( M9 Q. l: U+ d" C - ' k" e$ D7 L7 U) C9 U( j
- * User: user4 m+ s2 C$ ^9 t Z
/ f* X4 W2 `& I+ E" r- * Date: 2018/8/16$ {- G! i9 K$ i0 B
- / f. O5 |. S: {2 B
- * Time: 10:43( K! z, x0 D3 b0 b- o4 z6 | E
- ) Y7 t6 r' E4 X
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";9 t6 N+ X: s0 r* D
- ( g @2 i) w2 A4 N( p1 Z% I
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
' r1 s# a( w1 K5 \9 S$ u
9 e. D" T( o0 _- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是+ }5 p# B% W# b; |# }: h2 F+ j
- 5 V3 b- C5 }2 V' u$ S
- $margin = 2;//边距
6 F( K7 r- B3 c - : X( Y1 J$ g5 |; e- M8 X' E
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片" S! D5 l9 G p# u
- 9 b3 i: [0 q& N" }, w" H7 y
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
' M* z7 P* C+ @5 X, g f- f8 G
) q J3 b+ i; a4 E* r w" z9 Z- $QR = $picPathAndName; //已经生成的原始二维码图7 g+ S9 a% s1 S' V- N& U) ?; `; j9 t
( s# h, K$ d/ G, N# L( r7 Z7 `- $Logo = './pic/logo.png'; ! }' k% ]( Q* q
+ H$ \- N2 r) g: _9 e' P/ V- $Logo_re = './pic/test_logo.png'; + O3 i% O7 V0 M/ k
S$ r3 X4 f6 Y- $QR = imagecreatefromstring(file_get_contents($QR));
, w. ~5 K9 v' ?2 D Y. \# C" B
1 X$ V/ K$ G" v/ e& t, ~2 _( B: ?- $Logo = imagecreatefromstring(file_get_contents($Logo));
8 h6 F5 ]/ |+ S" f) T2 q" N- o - 0 m' T8 `6 Y% ~$ C6 q1 i( H
- $QR_width = imagesx($QR); //二维码图片宽度
+ ^2 \. y9 o2 A! U/ K1 m1 R" w
+ m, ^- y; i& s- $QR_height = imagesy($QR); //二维码图片高度
% h x# _6 p1 n% O! Y P! x
* { {. o" b! g. n+ K! p- $logo_width = imagesx($Logo); //logo图片宽度
* i& m+ o/ @. f" E( V3 L: I - 5 j L* `4 t4 L' ^8 E
- $logo_height = imagesy($Logo); //logo图片高度2 Y3 o. U Q6 i
- - p8 c9 X% L; t' D1 w/ o
- $logo_qr_width = $QR_width / 5;
0 b) ?2 \4 b' B* A5 u - ! M- j; o* a. h% B; S" f
- $scale = $logo_width / $logo_qr_width;
; |& \) R' }% f1 P' f, } - 6 P' t% G, Q+ C' J
- $logo_qr_height = $logo_height / $scale;
6 L9 R: A& B' U/ u/ B3 ~% O
8 H1 b. |* Z: y; @5 [4 {: y; ~- $from_width = ($QR_width - $logo_qr_width) / 2;1 P: Q# _# E3 N4 n1 I: v* O
- . L, |6 Z) { T0 s( C* G( @
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
; v- b) ?+ v1 l0 V( m - 0 b% m$ g; \: Z0 M# C& m0 S( k
- //输出图片
* }, i& G p* F" D
Q( L- g# ~+ {( n- imagepng($QR, $Logo_re);
/ \- L2 k, ]4 ^ t; q( O |. Q - ! m1 z8 v2 v) u
- }
/ Y1 e$ p5 v# B) d- v: f - ! y; C& O+ m, D1 z( v
4 A+ ]" u, J7 \1 E$ {: j: y
复制代码 3、qrcode_vcard.php (生成电子签名)
0 P" X2 }* }; h$ i( l; o+ C- D8 T3 ^) }7 P6 J8 u
vCard格式:https://zh.wikipedia.org/wiki/VCard
0 U$ e" Q6 \* \# p
7 _# C W1 Z3 h
; f8 l+ }9 z/ X! }* `3 l, o: F- * Created by PhpStorm.6 S- S$ V8 ~# r' S* e
- 4 L" k6 |) o: q$ |& R
- * User: user4 o) Y/ w* ?/ W- w
9 ]: L$ O" w" J5 l3 C2 {- * Date: 2018/8/15
. Z8 {# Y3 p; P% @* D, U
0 [" o8 ` \' V. k" p- * Time: 23:001 _( }( V1 G" }
- 2 G6 W( D( s3 e m; W8 U
- */require_once "./qrcode/phpqrcode.php";/**
7 b( u. Y6 @$ S6 z, Z5 l/ E1 \
, l: M. q" d$ {. j: ?2 O" w- * 生成电子签名
+ _6 H* j2 E% P: t4 @ - " W" @2 ~8 G2 Y0 r- V2 k' S* ~2 q
- * PS;使用微信扫描二维码# q2 |# `% P8 E, o
6 T" O C) M5 ]0 ~- */$content = 'BEGIN:VCARD' . "\n";//起始标志
# |/ T4 p2 a" c9 _
0 G- ?) U9 X* c6 O1 q( [3 U1 u- $content .= 'VERSION:2.1' . "\n";//当前版本& M0 l( X V7 w, Q0 @
- 7 k1 {. W5 E2 O+ h
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
' ^; Y q# X9 Z; @: x
1 P3 \& {, E# L( p8 U- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称% _" \! K2 H2 z1 \; }. H
- 1 l" P# e: A; X6 U( v0 Y( I
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位; ^! z7 P, q; A# z! \* H" h
- 2 F0 D0 J2 y. q, g: Q; O% d- K
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
! ]2 _0 Q5 L- ]; ? - ! l8 T& a x& x C, u* m
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址6 f: `: ?* _" u2 t# r# d& M
# J( {) c5 M K9 a- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)# w3 ?2 O O( }) v* }+ \0 n
d% A# n6 `: o8 C. i4 X1 b3 n- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话' M' [) V( T1 p+ H j: ~6 J" E/ I
" M2 p; O9 Y4 q' ^- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱1 E+ s0 J; Y, h# S2 O
, @2 [: l& _* f( e- $content .= 'URL:www.baidu.com' . "\n";//个人主页7 U( o* ]- ]/ L% h/ O) i3 \! P4 D
- & Q7 O, k8 Z8 b" c& _
- $content .= 'END:VCARD' . "\n";//结束标志6 u% W( F$ ]$ L6 H$ i: l6 u
- 8 L1 D4 \/ j" u0 K2 b
- QRcode::png($content);6 j' C' y- M5 `, A% g
- & h( K% {5 E2 ?5 {. v
- ! B4 I' z; L7 ~3 }! A# b+ [1 }6 x
复制代码
4 @1 l! f3 `, o4 W6 D相关文章推荐:
7 _5 Q" p1 k- J9 F1.PHP生成微信二维码实例
# X; C8 Q5 ]3 I2 ^" z2.php网址转换生成二维码7 a+ s. Z& d9 |' \- c
相关视频推荐:6 \8 x: q/ N! m" z+ g
1.独孤九贱(4)_PHP视频教程0 Z Y& B/ d A6 |. {
二、JQUERY生成QR CODE
# b0 H/ L, }, ~9 g$ q) e源码地址:https://github.com/jeromeetienne/jquery-qrcode+ w9 a6 ~ B- m+ z) j
) F6 i' c( h; h2 S2 \. q
jquery_create.php
: x9 a! p4 N, N+ J& L" w
: P: G( e9 ?% y" P4 \+ h, P$ ?- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 1 p1 v/ L- r9 u" j$ Z& k/ `5 Y7 M
三、PHP识别二维码
j' u! X9 v6 R1、方法一
+ E6 r ~ T" i- L' N环境需求,安装如下扩展! E- k: J9 Y+ R' X. W" l, w. p
- ImageMagick
+ F$ U. `' C2 Z5 r' ^6 z3 [" N( A- zbar
' `" r; O- Q+ w. V7 w- php-zbarcode2 U- @; A; s4 c0 x1 `
' \; r; B, K; J: e( W, x2、方法二/ R, q) f( |' v6 I' h: E
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以% r' _8 b; q- ?5 x! j5 q
qrReader类:https://github.com/baagee/php_QrReader
: z% s W( e0 y: [8 e0 G$ G2 {" U9 B1 \9 [- F: e# `
- * z3 k1 \ c8 k% N& i
- $qrcode = new QrReader('./test_logo.png'); //图片路径4 R4 L+ b- Q+ [
- 3 J9 S1 ^/ Z& [
- $text = $qrcode->text(); //返回识别后的文本
0 k& u# x. i6 W3 @0 C/ o
4 X8 X/ B: l+ D6 s- echo $text;
2 R, s! u7 m8 m. }
r# D3 F$ @; h e' n- k+ P% Q
/ ?, |% q' L( c/ j
复制代码
1 X/ h C0 M4 { r链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7# b; {+ B, o3 `/ _; f
# Q+ e( t5 @6 X! F+ q) o
W7 I9 p8 o$ f7 G8 }2 `
5 p! `7 F& z8 W2 }
' U9 c6 r7 l; l
: \2 @ [ k. U+ G
- j/ D9 Q. L" v9 F8 @. b' X/ x2 z0 _8 ~. X/ K
" C( W1 e6 u2 b0 X! ~
~( L6 m3 y" H3 z$ H
|
|