管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
; {; u( ?% A, w3 Q---------------------------------------------------------------------------------------------------
5 l. p% v* V" [$ p二维码的分类
; f# Q- M9 S6 {/ O- x. {6 d) o线性堆叠式二维码2 w/ `% X" A. o+ V% g; g
0 X% E0 \. ~& E5 A5 `8 T: F
矩阵式二维码
5 V# i a% a& s6 d, H; s1 F: E- l8 A! P' h+ E9 ?+ }9 y
二维码的优缺点
" v4 |/ ?( b% d; T. ]# \优点+ ]+ e0 l4 B( H7 q6 P5 j: N
信息容量大
# n* R0 _" \/ B' z
( i6 L" A7 A- C. ?+ |" n编码范围广4 B2 T: n" a, E" T" h
3 D2 R: e+ |/ B ~' K2 q( E. m0 V9 D容错能力强4 m* q! q+ m4 }$ j
5 O/ |2 a# X0 Z1 {
译码可靠性高: c: t0 x0 o6 S; T4 }& b
/ Y* p" z; O2 P
可引入加密措施9 Y" F+ |- H4 J
1 d9 D, ]) q) g
成本低,易制作
1 i- f$ h/ w* W+ a
. r. h3 y1 W& k8 C3 P( F缺点
3 L8 N( r. C# T) f* S3 d) J( T' A二维码技术成为手机病毒、钓鱼网站传播的新渠道) |) W* y+ N3 M! W8 f; L7 Z
$ ?: N2 r Q% Q* p u) @信息泄密
/ F; g. m3 n2 P- W% S8 w* t1 v1 R
: w# x8 U# {! V4 U6 `1 W9 e6 d目前流行的三大国际标准
3 w7 b! O4 p4 I, `; ^& g( k! R! WPDF417:不支持中文& B* l2 ?6 f* a/ H( }
/ l1 P' |6 Y" _+ h Y' M- Y, \9 Y; n
DM:专利未公开,需支付专利费用
+ O! O1 y' i* b7 o$ ~0 z$ c; S: J2 M* {7 ^
QR CODE:专利公开,支持中文
d: [0 v- h7 V1 y4 M8 R% J a6 Q
QR CODE 纠错能力
) ~( `8 ?" y9 _3 i2 sL级:约可纠错7%的数据码字
/ P! J8 w4 i' E& v. m; U- m2 C
) y- f( K: ?6 c6 F- T9 UM级:约可纠错15%的数据码字
4 U2 E: a/ [3 C/ n% d5 W; P$ K% D) u5 x( L I3 l9 Z
Q级:约可纠错25%的数据码字5 K& t S2 j/ Z& y
+ U3 H/ M+ p x& ?, n+ e
H级:约可纠错30%的数据码字/ r& n$ v3 k; ?8 i8 e- m) b& H
" L$ C" A, x6 k* r V% t L前提条件8 O- k) B; G! b
GD库
; C2 i/ l5 Z3 d! z. A2 J
: ~# r& S) Q6 n一、PHP生成QR CODE
! `9 |6 ]3 {* c" m4 f/ r官网:http://phpqrcode.sourceforge.net/
7 e! t, n* t8 E# i
) X$ i7 C9 ^ D3 o5 T% G4 P% h) e下载源码:https://github.com/endroid/qr-code, ~% V/ B5 T% W8 u
. b B& p# q" P5 \0 `/ _: S5 n目录结构6 f4 F6 ~# t8 `4 [0 R/ h* f; l
+ `7 F/ ]* C0 u; a, {! G8 f: K1 L7 Z! ]1 f, ^3 C
1、qrcode_create.php
* @ L/ y p0 P" w. w+ jps:生成普通二维码
& W7 v" z. c, C- W1 ^
7 a( q: f; V1 ]- include_once "./qrcode/phpqrcode.php";/**3 q6 y5 D) I9 m. z# @
# M1 B7 g2 P7 T# ]. h! q- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
( j9 @4 O, D* f# z - 8 }: L/ G3 |1 I0 e& _ y1 e
- * 在浏览器上直接生成一个二维码(内容为abc)9 t) }! t" O- ]8 F7 Q" _
$ k3 X( @2 K/ _1 w8 H. n$ W- q- */QRcode::png("abc");
( C6 r' V; ]2 E, G7 q' ] - ) J, }& v- c; b2 b
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
* X* l9 V$ F* S$ y7 ^! I - . m- [! O6 Z* f) S, \* i) {
- * 生成文件到本地9 v, C5 t5 _7 J8 H
- 3 R J/ `9 j9 J* C
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
# v, P0 `" B' ?0 a, a- g4 c
: {$ p9 s4 F/ W. K5 Q$ G! v- * PS:$saveandprint源码的p6参数做了修改/ I" D/ \: S2 j0 D
' `6 d$ w2 E, U2 m4 v- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);+ y* g" W/ h: y. q7 k
- , `1 A, I; h* ~7 {% L z
( c* J5 x9 y' `3 d
复制代码 + A4 r& U3 I% L
2、qrcode_logo.php
3 i* I) a/ x( R/ ~9 z* t6 ~ps:生成带Logo的二维码
$ p% ^ H2 F' J: ?7 }- /**
1 w/ }$ y' P9 A0 M, k8 d1 P A' Z3 p
- P, b5 q% Z# k$ j3 O- * Created by PhpStorm.! P( v6 T3 t0 ~+ z8 z
# s, x8 K4 V2 V- c, S& N! M, C- * User: user
; X- w. f, m" B
4 }. g; d6 }' @$ d- * Date: 2018/8/165 T/ d8 O; m1 w' \
- - q6 B Y) g& | v# w1 b) L
- * Time: 10:43
, I% g6 t3 U ]8 I/ h2 F
' X* `- p' P. l7 P8 E- */include "./qrcode/phpqrcode.php";$txt = "测试内容";0 K V2 S5 j" p8 ]
, q( N) g6 f, C1 {" ^- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
. O/ d2 I) j- {: {! S - O9 o0 Z0 q, B7 w; w$ G7 ]
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
/ f2 @! k/ W1 c
0 f m, Z9 Y {' o# Z- $margin = 2;//边距
5 m- Q/ [! v3 E* a. _
( H" u* Z0 U/ x' O% g) M* |4 ^- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片2 u! [- [5 o0 }- A* U" i) p
" R: }. |+ K7 v( v( b' @- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ & `* J8 F+ M! K1 h
- - V, Y6 ]% v, b# T
- $QR = $picPathAndName; //已经生成的原始二维码图( ]) }5 d8 d# y6 {, D" k8 Q: K4 ~
- ( x/ L- Y( e8 }, J
- $Logo = './pic/logo.png'; " C/ E( X/ |# j! {7 W! O* F+ K# b
+ Y+ t( n- D, Q' x8 |3 C- $Logo_re = './pic/test_logo.png'; % Y' m; a9 n. A
4 S0 E" A' i, r$ X4 m- $QR = imagecreatefromstring(file_get_contents($QR)); * e4 F. P& k! s0 n3 E) @ _
- 3 E0 H% ~8 I$ e3 i% A' W7 b
- $Logo = imagecreatefromstring(file_get_contents($Logo)); 4 L* g) m( N, o9 r: W0 _
- 8 Q3 }, @, o3 ], l/ q
- $QR_width = imagesx($QR); //二维码图片宽度
; s0 b1 J. h& j( j
9 X+ w4 u) V' Z9 U& g' l" s- $QR_height = imagesy($QR); //二维码图片高度0 K' R' v3 L! a6 o: _$ j
- 3 z% x4 W/ D0 _& g) s: i; B
- $logo_width = imagesx($Logo); //logo图片宽度$ e4 p) l: W+ {5 c
; {& }. T1 ?2 S0 G1 C: W* C/ U ?- $logo_height = imagesy($Logo); //logo图片高度
$ l' {3 h) L; \, A
( F+ K \2 h" H# M* g9 J0 e. ~- $logo_qr_width = $QR_width / 5;
3 P, Q9 ~+ I. E3 r
X9 L9 l0 V$ P" S; H5 K- $scale = $logo_width / $logo_qr_width; - P _5 @$ v; b4 L& f. Z
- , [/ N# U, G" p4 w5 w5 c" @
- $logo_qr_height = $logo_height / $scale;
) { n( J. X t- r1 Q - - \1 U$ h. a0 \9 v5 J
- $from_width = ($QR_width - $logo_qr_width) / 2;
6 u6 D) G- F U% C! |# W4 V - - U2 U% ~9 H# ^0 j# h: Y4 M4 u
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); ( B/ O6 _8 Q2 c& o/ e; a+ R
+ J2 i! n# Z8 D9 [- //输出图片0 I2 l0 j6 a& X) N; J4 c
- ( y7 d4 U9 b; S1 Z
- imagepng($QR, $Logo_re);
5 J: K# r( e# O0 h [
, h" Z8 ]# X" z' h Q6 g- }
2 m9 V9 i9 t D) ^6 |
! R% D/ Z/ P9 P: Y* K# E- 7 o5 C( E6 `* ^; f
复制代码 3、qrcode_vcard.php (生成电子签名): A5 q& u! J" L$ G3 K9 H( G6 G8 e
" j" p, h$ [8 Y3 @- Q7 r5 Y
vCard格式:https://zh.wikipedia.org/wiki/VCard
+ q5 F, b7 j2 ~% M5 j5 y9 q/ \8 Y1 ^' F x$ O- o P- f4 B
. ]& c j: Z9 j4 ~: n' ^. T4 j7 r- * Created by PhpStorm./ V, @: R- a( p$ l- J- t/ \
- 1 K2 z% A% g! l+ s
- * User: user
- X# E7 s2 b6 x - 6 [( V3 n- f6 w
- * Date: 2018/8/15
4 I& |: ?4 H. _% v4 z- j
$ Z& V, M- V0 r0 c6 e- * Time: 23:00+ l: \+ e G( C9 l
3 o; B; n/ L2 W* D' u |! i9 v- */require_once "./qrcode/phpqrcode.php";/**- T& d ~2 r# e8 B' f" B* ]
- $ V. c" D+ L( z, b+ ^8 \
- * 生成电子签名
$ O0 e! N& S9 s+ p: r h - 4 z" p7 E& f6 }2 w5 s
- * PS;使用微信扫描二维码
3 t. f8 f" h. A& g: \/ v4 k6 u
$ m6 ^* ]! W9 c$ y7 N4 u! u- */$content = 'BEGIN:VCARD' . "\n";//起始标志/ Q( S6 _* Q, N' n, `. \3 r
- 4 T# z; B7 r \6 I
- $content .= 'VERSION:2.1' . "\n";//当前版本% c- y& E( t7 Z6 I/ W
. x* @1 d8 f' i3 ~' W- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
$ R5 J. b5 e& ?+ G. N* V
$ W) f2 d7 A, G: e7 S- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
$ B6 K# n+ \& q - ( v( t3 a6 h* h' r$ Q6 f
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
' ^: s, K- j& G, N) p* }8 D6 T - $ O4 N0 C1 M% Z' u. i# j
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
4 b8 y7 S& u% [, T, z: H - ; T+ r+ e% m( G$ s1 `+ z
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址! v0 A4 m/ K, A* A6 o+ f* w2 Z
* M+ }: k* Z' ]0 E3 U0 E5 Y2 N; q- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
7 l1 F% G, Z. t0 {, l% S
- i; p! Y- y" g0 G8 _- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话1 P3 X& H4 ~! q
- % P7 Q# V( b1 A7 Y0 E
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱! |8 M4 k' m6 J
- - ]; H3 F9 c9 _6 Z2 G0 j
- $content .= 'URL:www.baidu.com' . "\n";//个人主页
& J) |/ V/ [3 b0 {/ | - 7 R$ X" p! Y- \* T" R! g5 o2 C( v/ Q
- $content .= 'END:VCARD' . "\n";//结束标志7 x$ K/ s7 g4 r+ d& n2 U5 l3 j
- + r, {5 y/ X% M7 }% d
- QRcode::png($content);
+ V$ K# U9 F/ c( O
7 @' h! _9 O6 ?( b4 Y
% ?! H# b9 W! `$ T0 S- r
复制代码 3 J' o5 T+ N2 s o8 r
相关文章推荐:* P! b# S! G4 C# s4 Y
1.PHP生成微信二维码实例* f7 g- {1 T, M) V. T' {; F& u
2.php网址转换生成二维码# v$ F. y/ U' P' Y/ u ?7 [
相关视频推荐:4 t& e4 \$ `. R
1.独孤九贱(4)_PHP视频教程
3 N( s, F# G, t' b' U! [" G/ q二、JQUERY生成QR CODE2 v1 x% o* [7 ^7 }
源码地址:https://github.com/jeromeetienne/jquery-qrcode/ }3 Z! ?; v- X9 ?$ b- J
0 M' a& F- a9 V
jquery_create.php, n& q7 N E$ S$ y3 k5 y9 |
4 y( A9 H% L3 j
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 * e0 B3 u0 h) g0 w
三、PHP识别二维码
. h" M0 T, ^: z) T7 h1、方法一' a& w2 I: E) r& i8 |$ l0 B
环境需求,安装如下扩展
9 V: q7 R0 g8 ?& a- ImageMagick1 \" J A8 p+ m' H7 J+ N
- zbar0 b7 E; n" ]7 [" s1 e
- php-zbarcode
2 z1 C h& h7 j6 r _8 D Z
' Q) o( f8 v" p8 U* X2、方法二
; U" q& u5 F: M8 r; d/ @PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以- t6 y& `6 ?( G( ~# V3 D9 \$ M3 V
qrReader类:https://github.com/baagee/php_QrReader
5 [+ U: A0 l! Q% b" b7 }. ]1 X
! O$ e2 ~; L" W7 V) G# T- {" T |8 Z6 p1 _
- $qrcode = new QrReader('./test_logo.png'); //图片路径
/ d* H5 t8 {5 C$ g$ k1 T) C* F - 6 w" `! a' L: d: w
- $text = $qrcode->text(); //返回识别后的文本
- Z4 }; p4 l) Y, _# H - # i- \( }+ s* \' c. ?
- echo $text;9 A: x% ~" ~4 g0 ?
- * n7 h% q( f& |$ B/ K
- 9 S$ S- _; s' {9 A9 G
复制代码
% h# s6 [; f+ E! O p5 j链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
+ p+ S8 C7 [$ D" q& P; w" `# i) p/ M' l/ W
3 N' z# Q, A; r' ~8 y( r5 a2 r
" z( W8 Z+ [7 `/ w
0 \, P! y0 e K9 g! b" W1 X0 l) G5 ^" t" i
! ], q. p0 z, x+ D
( }# V( \* q2 \1 o
4 M5 J8 S* Y1 k$ n e8 v/ s! m! T* e8 R1 f6 {+ |
|
|