管理员
![Rank: 64](template/yeei_dream1/css/yeei//star_level3.gif) ![Rank: 64](template/yeei_dream1/css/yeei//star_level3.gif) ![Rank: 64](template/yeei_dream1/css/yeei//star_level3.gif) ![Rank: 64](template/yeei_dream1/css/yeei//star_level3.gif)
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
( D) l* ]( |1 o U---------------------------------------------------------------------------------------------------) T" n7 v {" X' f$ {2 J
二维码的分类
$ A6 }% r Y% g+ h) e线性堆叠式二维码
j# c# X- B2 t2 H
9 b$ c- g2 H0 [, H" ^矩阵式二维码/ B6 g7 @; k3 ?
& g& D/ n: _; p1 S, r
二维码的优缺点
: z1 q( \$ e" D" s& d8 n优点. Y, O5 L$ t3 g1 M" H$ M, L
信息容量大4 T c6 A/ }' h' Q: }, Y
; r& g8 Q' A& W, k' b6 _2 W
编码范围广# X! y3 W8 c" _
# ^( |$ R" v8 H0 k0 H2 a! E
容错能力强
! U- o) I% P* O: C* Z. R& H5 G# a5 y4 \1 j+ m
译码可靠性高
S" k; k/ J' m, D' I. L0 L- k
, I B) U7 R/ P% |& Q( c [' a可引入加密措施0 P1 h- ?4 c k; q) k3 b8 k0 Q( M
! _ ~# {2 s: R' b# G
成本低,易制作6 R, c0 H; X) A3 D
, J1 A' j c" E" Z$ P3 Q
缺点
6 t7 }+ ?) t- f二维码技术成为手机病毒、钓鱼网站传播的新渠道
2 ^3 l& B( i8 P4 H, e9 X$ ~: D5 X2 P, S$ l/ N# F5 a
信息泄密7 Q; J5 {1 \' H4 m
! W% k- N- ]0 I1 r3 S7 C
目前流行的三大国际标准, H* y7 _) p$ {6 B8 m" N1 }+ Z9 k/ l
PDF417:不支持中文$ i( d. V, U" l$ x7 {
0 N+ h8 t# f, g$ n7 ~; a* `, }4 {DM:专利未公开,需支付专利费用
8 ~9 U3 O5 @5 w, ^, H& `* R, K r1 q
QR CODE:专利公开,支持中文
w9 x) W: z' f3 _/ {' T6 B. o# f7 h8 a
QR CODE 纠错能力
' e/ ]% D, H& V4 a3 sL级:约可纠错7%的数据码字
- X( x/ k) J; W. _8 ]+ a
* ]' c* e" U3 c3 E, m! s" S* rM级:约可纠错15%的数据码字! A7 z% S% n9 c \% e4 W: R
& U4 Y& m' s. `/ H; LQ级:约可纠错25%的数据码字/ Q: `* e+ T) x
: H2 x1 P( X3 G3 E0 ~H级:约可纠错30%的数据码字# h, J3 O# O' o0 y8 ?
7 n. U! x* Q4 w前提条件, @" D ~; [9 v' g6 V
GD库' i+ O9 _" k! K
& Z. K: i8 O; L, e7 N8 F+ m) r% v
一、PHP生成QR CODE
1 a9 w6 n8 E/ q& O5 ^# D官网:http://phpqrcode.sourceforge.net/ T2 Q+ K: x& R# {
1 r- m! g, M1 F9 m, W" l
下载源码:https://github.com/endroid/qr-code
$ m! Q" w% W4 A- n" U0 I0 m% k7 y* h$ W( @
目录结构+ B4 }1 g' Z* b; @" M
) z3 r. j3 }; i5 r/ t
9 v6 |2 |$ ?- p# q. c& R1、qrcode_create.php
+ V0 G6 i% ^1 ?+ ~- q2 N5 Z. g5 lps:生成普通二维码
' u8 m/ ~* z- j; B) n$ T
. _' o; Q# A- \- _) [- include_once "./qrcode/phpqrcode.php";/**+ u0 P& V# i0 E6 ^% g$ t
( w# j0 B1 d9 y- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
; K# E x" Q! ~$ u/ \; a - : w1 h& V4 z% o8 N
- * 在浏览器上直接生成一个二维码(内容为abc)& I1 J; d4 u9 `4 p% P
9 b, X, P) e. @5 w/ {- */QRcode::png("abc");
8 {; [8 t- Q5 a6 A7 |: i. z
# g1 m1 v, B' E9 }4 b- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
; H- m& d6 Q! \/ s; f* B - 1 y/ F# ] B. ]- Y" [2 }
- * 生成文件到本地& U" v; n, Z; {
# F8 c) J* L2 C/ U# ~- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印); _4 i5 D* U, `1 ?# J
0 O0 l j" C w& I- * PS:$saveandprint源码的p6参数做了修改1 N1 Y: X/ B( ~& R4 T% \) ^1 w
- : k$ l& X( u. s
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);: d# L$ z7 x+ \. R5 t. J
) V" G( W) V' b5 u5 q( m3 B
0 o$ c6 y) X, Q( o
复制代码 4 a8 M- Y6 E6 M8 a" c
2、qrcode_logo.php8 k/ g' q/ q+ }' ?# \
ps:生成带Logo的二维码- . \0 ^; g8 R) @ T7 p2 p3 A
- /**
/ U5 y8 W' ~; d/ ^3 [0 Z - 2 z7 a+ v3 T- `0 Y
- * Created by PhpStorm.
7 ~* G4 r8 s7 Z2 Q
4 A4 \) C: w1 X- * User: user
+ T5 m. d D, ~& o! H( e1 q
, I$ l, f# r/ _3 \- * Date: 2018/8/16
& ~" \/ j' Y% y
3 }. J% e( \8 {- * Time: 10:43
5 I) ~7 K L: }& ^4 ? t - 6 b2 J5 {* |' k$ T% T
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";* H7 T }3 w" G0 x; M0 i
4 U% d% @! A1 ~" X- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称. r/ y: Y$ F9 h2 j3 f, Q% p
- 1 x1 g4 ?# o. X. h
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
1 t, h+ B$ ?# S, t - $ J: a1 F: f! ]- C( b. V9 o
- $margin = 2;//边距
$ }+ q m& ^- o5 n# d3 X - % s" F! ~9 r1 w. L1 [' e) l0 c
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片0 v/ `4 i8 U! [3 ?
4 Q) y; |# v [2 ~, {- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
4 h# ?4 n) g' L0 F
5 D; a+ c9 f) K& b: H- $QR = $picPathAndName; //已经生成的原始二维码图0 _+ z o# y6 c9 t1 x; v4 V3 ?
- 9 ?. {4 r4 F. \& n- O
- $Logo = './pic/logo.png';
; U( h6 V T! E! @ - . r, z8 u8 P* R" B5 Y
- $Logo_re = './pic/test_logo.png';
% z% a! C0 [$ X/ e/ [
8 {# o) `* q" c6 g) h9 _% X& h h- $QR = imagecreatefromstring(file_get_contents($QR)); 5 t: f% o$ y' ^5 l9 j* q1 z) n
- ) A, X6 g4 X1 `9 p4 S F7 P) [8 X
- $Logo = imagecreatefromstring(file_get_contents($Logo));
2 Y# {; F/ p2 H4 B! T' Z/ \/ m2 H. V: f - 9 x+ P& i- e2 N# A S
- $QR_width = imagesx($QR); //二维码图片宽度
% K- E' g; i$ W& x4 O: u/ K2 b9 }
, O5 ]! K8 S, `" p F+ ?- $QR_height = imagesy($QR); //二维码图片高度
& {" k! P; b6 t/ t: g; H* X - & ^3 M* ^) r; B+ D7 J
- $logo_width = imagesx($Logo); //logo图片宽度# |0 a3 Z' r/ _( A: T+ @' r; O
4 |; ?$ u; S8 u z" K: l3 i- $logo_height = imagesy($Logo); //logo图片高度
" G1 D7 `7 n+ W
' p4 ~. L7 _) P8 ~' i4 ^- $logo_qr_width = $QR_width / 5;
$ Q- N: D/ g3 M {6 t; ]
' x: [' a/ w$ E. ^- $scale = $logo_width / $logo_qr_width; ; y0 P& ?' X8 x1 M0 Z
! P' R8 W4 H: M1 o- $logo_qr_height = $logo_height / $scale; - \! c3 Q- [2 ^; L) f; N9 Z
- & a6 X2 Q' Z7 a/ \1 D, j `
- $from_width = ($QR_width - $logo_qr_width) / 2;2 C; J; c7 d( k
0 P Y9 A7 N4 a( y% N( L- {/ T) z( u- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
+ f/ D* r6 [1 \) M3 E" s4 J - / r. C9 w5 E/ B# V! K! e4 ?
- //输出图片7 q2 A" N: a& t( D6 I/ E
- 6 D1 A; }0 y$ H8 K; ~
- imagepng($QR, $Logo_re);4 ]5 C3 u N9 ]; F! r( p0 `% [) z
- " H: Y& N: z, J' @- `( G
- }# G* y+ `# j: D
0 O5 S, T( {+ Z: O: |8 I- " {% p+ A4 `5 i9 Y
复制代码 3、qrcode_vcard.php (生成电子签名)
6 E1 [3 P T# P6 F
& j- D1 k L9 qvCard格式:https://zh.wikipedia.org/wiki/VCard
# P2 F/ [- J& `2 Q5 B: @9 T6 ?1 d2 p( s- t* n
- 8 |) d" E* ~" t: l
- * Created by PhpStorm.$ ?. {6 d( ?+ `- x+ \
- 8 N8 J S- g- f+ K0 i% q0 E" e
- * User: user* ^1 y4 ?% s ^* C) v( C1 x
: ~2 g$ `2 d8 L& O/ w3 c- * Date: 2018/8/152 g' [( I1 Y& O) T6 }/ ]
* Y3 y! n0 f% A" r- I& \- * Time: 23:00
3 I7 F* f) c8 T0 U E \" W
$ Z3 F% j) S4 a2 n" H$ k- */require_once "./qrcode/phpqrcode.php";/**
1 X, t' p3 z4 D/ U
2 p, c6 Q7 S4 L4 i/ u$ F9 P- * 生成电子签名6 f9 C; b3 V1 R1 f
- " q) A, Z: T5 z* y4 z5 x# U
- * PS;使用微信扫描二维码 l- S4 z! e5 [
- + s* |' [* j6 C/ t- `* E
- */$content = 'BEGIN:VCARD' . "\n";//起始标志# u0 @* _8 N: M8 {; x" L! i
- # q% v3 H$ Y# E7 Z P
- $content .= 'VERSION:2.1' . "\n";//当前版本
' E' t& Q& K9 ~3 d& z
9 @9 X6 B# s- T* U9 X- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名( S( G, G7 u& Z) T
- - Z0 D/ U# T0 Y/ l
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
: P6 w" f' m' v, \" u3 X
- k1 [" y' J4 Z i- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
% T- i* w- L( n# u0 }& }0 T( n& b: P% V - / ^9 {! c6 K0 a% y. P7 `+ R* F
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话& `& P" Z: Q0 a# Q, }2 [9 A
/ m& t; U" T5 D& }% `9 ~- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
% G+ i9 \& o* h/ z: [ - ! k" w% J7 m8 c" N/ t2 s9 V
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)) U h: D3 k# I y
- / K7 q7 Q) U6 k. R
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话4 B8 i( d9 k3 D+ {$ |( _
1 F# T% N; n5 ^0 j( Y. Q8 M- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱* s& c0 E. E! l2 h0 L
- " a: f7 b- H1 I; W
- $content .= 'URL:www.baidu.com' . "\n";//个人主页
+ i3 b7 ^' w# C' w& C T
6 ?3 r3 s4 |: @# p! \5 N: z- $content .= 'END:VCARD' . "\n";//结束标志0 K, M$ A5 B$ Y" b8 G% t
- E/ v" t. x: I& z5 f- QRcode::png($content);0 I7 [. p* n- F. s1 T. @* t; K
- * B. y- o0 C) r' }$ M: t. s
- 6 g5 B Y- n' ~7 [( q$ y
复制代码
& A- W, m9 X. d& J9 _" m相关文章推荐:
6 P7 w: e/ f5 G- P1.PHP生成微信二维码实例' L4 p9 F( w, ~0 P
2.php网址转换生成二维码
8 o( G" p, V3 F z/ J* i% h相关视频推荐:
; ^6 F, ^& O6 ~# u$ @8 }. T, \1.独孤九贱(4)_PHP视频教程" x ^7 ^1 h, Q0 r$ V* x$ i
二、JQUERY生成QR CODE' k: d& u& c* ]6 ?1 m9 t+ f
源码地址:https://github.com/jeromeetienne/jquery-qrcode2 c7 H; O/ q! }) E3 F4 @: ]' T) N
3 E: E4 F9 ?6 k) `6 S* Djquery_create.php
9 r2 T5 D' u1 ?' |) b8 v7 b7 b
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
! e6 F1 o9 n0 \# i7 R& E三、PHP识别二维码
9 ?) o. c2 n$ W4 l3 a% O1、方法一+ T; z& {! o9 d# W
环境需求,安装如下扩展
$ V O. p' h- v- ImageMagick
* [4 Z$ v" j! v- zbar
% T3 J% O) L5 M7 n, T2 E- php-zbarcode
/ M; L+ S1 m. w4 X* y* ?" L0 o0 f4 Z5 W: O, I
2、方法二! Z, H* S9 R; P& v* D1 v
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以 H1 w" [8 m- j
qrReader类:https://github.com/baagee/php_QrReader
0 I2 k% o0 e* q4 E. L' l
) O! `3 L4 w' P; z- C! c% J- m2 d
- $qrcode = new QrReader('./test_logo.png'); //图片路径) K0 O+ h9 H4 K- ?0 C5 T2 y
9 L( J3 w' [0 W& j, B: q A- $text = $qrcode->text(); //返回识别后的文本
' Q& }6 B- N# u7 Z# ?* s( c6 {2 r - / h' q2 L$ w3 k! X4 ^
- echo $text;
! |2 c7 W; l! I - / m/ z2 J6 v+ }; p/ }9 o. e
$ Z- d5 k2 q: A8 B
复制代码
) ^6 X! `9 E( R% Z1 p8 U链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
$ C) l1 z/ r1 i) {
/ o3 F8 M, A+ B' o2 b- ?8 @ a1 \! R- L/ R
& G8 K0 E D. @1 m/ r& f& T, _! L- ]1 p% K a V/ [+ p
& K. F3 {) O p% m$ f! R% f4 J/ X w4 n9 S- N' w/ A- s1 Y
1 d E/ s, h6 R# g2 Y3 m
0 {, n# M) j/ [2 j2 }: P
8 D4 I4 i/ |4 s7 g5 L; A- ` |
|