管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
9 } ^2 [* U1 I4 h4 A( \# \---------------------------------------------------------------------------------------------------
: [; ]3 u6 c" A. \& S0 K二维码的分类
; N" ?+ g: n7 Y; u线性堆叠式二维码
1 A5 M% F( o7 y2 P+ {0 g" F% z- ?
矩阵式二维码& ?- t# Y. e& `
" X3 g& A- _$ z0 Q$ I2 ~( x
二维码的优缺点$ m& R/ O3 a8 W8 T$ o
优点
) |5 x. j' d( B- Q/ P( Y信息容量大$ d X2 ^! [3 N+ s, B t0 N
/ @, p% U- ?# S8 K. \; R( A8 J编码范围广
. ~: V1 w @" O, [8 O; s; K4 o0 ~6 E
容错能力强* ]" c3 t* ]9 d7 B
9 U6 P& W/ v6 U: y译码可靠性高" | Z5 }* @' Y0 a3 q1 O
6 \* |' f7 |$ r# g, F
可引入加密措施
& q- R: A2 `* Q' r
S) H1 _( L& i# `1 @/ A3 \' l成本低,易制作1 W) r8 R5 L( C# N
6 T/ x! E" A2 i- D缺点5 |- p; A2 B% W$ }$ @
二维码技术成为手机病毒、钓鱼网站传播的新渠道$ C! k2 ?, Y; X
7 p( m* n( b3 N6 {/ Q! A
信息泄密3 E/ q% S$ L6 G, m: \
0 C5 H5 Z1 B* z3 P" H
目前流行的三大国际标准% j" z# B5 K; `/ e
PDF417:不支持中文$ j: x m1 f% b# n
; U$ F. G3 z8 ]DM:专利未公开,需支付专利费用 N" C2 @# X# r1 ^: i
3 |5 J4 m: [# d: d+ Q; b Y, {) h/ AQR CODE:专利公开,支持中文
; F7 V( s+ O! o# |9 ]- l$ V C
8 \- y3 e5 h W! J* uQR CODE 纠错能力3 t7 S3 N6 V. ? O' ]- x8 r0 I, ^) p
L级:约可纠错7%的数据码字
( v v$ N/ L( X. S& l. c% a. A( o( j8 W M
M级:约可纠错15%的数据码字9 V& d/ @- @7 N, ?* r
/ M6 o& G, N% L O# LQ级:约可纠错25%的数据码字
# T; m& ]/ j) B- j# S2 y! z+ u$ I/ I& q; q1 d1 }- V
H级:约可纠错30%的数据码字
( A P" H5 m$ E, S) w' s
8 [2 @ `5 b2 o* c7 C前提条件
! p+ z6 h/ w! QGD库
4 S$ B# F5 i+ f. s! Z- c4 l/ p7 M6 R& `* U9 ]; u, W. {& h
一、PHP生成QR CODE8 w5 F) ^* V8 k/ K9 P: P4 d8 h" ~
官网:http://phpqrcode.sourceforge.net/
2 U+ i$ `- ]! n$ B5 V
6 O$ U' \! w0 N' H下载源码:https://github.com/endroid/qr-code& q9 i4 X! h" t4 o) D( E/ r
; R: ^ u9 ~% h: r
目录结构
2 _7 ]7 d# E$ ?' _
4 t( L$ Q" \8 c1 v* v( m6 ~9 u& H8 E7 h( K1 a
1、qrcode_create.php
: I* b, r- Q! b1 Q9 S- _& M, ?/ zps:生成普通二维码# {9 a2 ~' o( i& n% l
- . B4 h9 E: |& c7 y" c: T& ~
- include_once "./qrcode/phpqrcode.php";/**
2 `$ G2 m, f2 v
% {: w, r. v& V$ f5 ? z: R, l. r- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径- V8 i7 K W' z5 I# W- Q
8 `5 X v- `. z+ `- * 在浏览器上直接生成一个二维码(内容为abc)
- A c0 ?& W. x* C! O% j( q( f. ?
) w2 f5 r/ }; Z9 {# Z3 G9 c- */QRcode::png("abc");& p8 o+ Y/ [- J: I
- / I) R1 g# [' I! F0 e" V
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
! y: |/ {4 h9 `; ?+ L" [8 X
- u( O3 d2 f% L8 D2 Y- * 生成文件到本地
; J9 x* c+ R0 I% t
' m' w r8 i6 l5 X- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)) X! ~0 j% z2 h4 K- r7 c) F& S
, W+ a. o' [% J$ r3 g+ [- * PS:$saveandprint源码的p6参数做了修改
# V, t* X) \" U0 m. v
7 F4 R3 S$ `) O- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);! s6 I5 E& |, y( J+ i
- $ s7 H) H8 `6 c( q
a& ?/ j' V S. Z& j
复制代码 ' J) i2 U) l3 h P5 i
2、qrcode_logo.php
8 d: W+ u0 T* R& Q; ~$ Aps:生成带Logo的二维码- $ k) V6 N6 w# m$ y2 R: ^+ }0 ?
- /**
# e7 s5 S) E0 P - ! g; k$ D" ~6 I
- * Created by PhpStorm.4 _+ P d* i5 t! V# h& J5 b* t( i; a$ V) {
& S" o! H) A- B4 K* A3 H3 f- * User: user& N3 w) q, J& h3 e0 N( r! c& m
3 [. W( A S1 ?% t& m- * Date: 2018/8/16
, u' H) Q6 g. l, B
; v. o" L$ d: @) o W" y- * Time: 10:43
2 b) K k2 [( v2 ?
; q5 a9 O" O3 F8 b' G. R/ K- */include "./qrcode/phpqrcode.php";$txt = "测试内容";: o, J8 Q% ^8 A6 T# u
- $ @0 s3 _6 x* i. a' k# o
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
1 x2 p: H* M) s1 a
" W4 ~0 p/ M- }' u, O9 S! A- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是) Q9 f/ x! |1 n0 L7 R4 l/ @9 M
- + t3 D: U# r. F& k* m$ ?5 X
- $margin = 2;//边距4 g5 T) u; {. v, O' C( j
& s5 b) V, l$ o# e- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
% ]1 T! t3 C l( u - ! s8 H, [6 j- Y; v M$ h
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ - ~" \8 p" l7 h q3 l0 {
! ~- Y+ r6 ^, Z9 |7 D6 `4 ]8 n- $QR = $picPathAndName; //已经生成的原始二维码图
& z/ T9 |0 _" G: s- Z" O - ) E y, J# p9 m4 s) S
- $Logo = './pic/logo.png';
2 U# K7 t4 [5 X# Z& m3 X5 K* @* h - X: o0 ^& a6 m+ w% V
- $Logo_re = './pic/test_logo.png';
. O, y+ d7 `# T" h, v/ R - 6 l7 @' S. q: H" y; m9 N
- $QR = imagecreatefromstring(file_get_contents($QR));
% g8 v. t s: ^& e) B
/ a% ^# E2 B! Q- $Logo = imagecreatefromstring(file_get_contents($Logo));
4 B+ d: w- T3 F
( y! [4 K9 ~& z- $QR_width = imagesx($QR); //二维码图片宽度+ |# @, Q- C) U( A" Q% S3 @2 B- N
- 5 A. E, g) I7 m
- $QR_height = imagesy($QR); //二维码图片高度7 J' b0 N9 c/ l& u5 P
+ {" i6 Q; ~9 }" |: }+ Y- $logo_width = imagesx($Logo); //logo图片宽度
. t2 p1 A8 Y" W; t+ e+ V. q# z
: |# E/ d' V S' R/ J- $logo_height = imagesy($Logo); //logo图片高度, t( t" U- {+ f* S$ D- a
3 T* f8 B% v+ w# [) A6 m- $logo_qr_width = $QR_width / 5; 0 |5 ~4 T" N9 T, H3 |
- 8 T; |1 ^, f0 R
- $scale = $logo_width / $logo_qr_width;
( v6 e$ o3 m( L& N
9 @/ x, C, _3 t& w3 C- $logo_qr_height = $logo_height / $scale; + a' B- m1 N' j4 s5 ^: M- Z5 p
* W; e+ S# E3 |1 U! e- $from_width = ($QR_width - $logo_qr_width) / 2;8 W: g+ W% B9 a. |, a) v/ b3 ~
! [* B( x `7 X4 O: D- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); / ] R2 u) X- }' {
- 7 N' v5 w' C* A o; w
- //输出图片+ J' @: ]+ X% q" K
- 5 m& k% k. F6 Z% m) k- ?9 \* S! v
- imagepng($QR, $Logo_re);
5 m: j0 g! O4 T& [% w - 4 X1 z2 h o# u: _2 K3 a) F: W$ S
- }
' s i9 g' W& h- A% x% p
- V: ~& d$ e! r0 b3 e+ A6 n, t- $ f# U7 w; ?3 Y9 a5 l. D: j
复制代码 3、qrcode_vcard.php (生成电子签名)
' `) d; E4 S: A* a
# ^8 I: ]7 f" y6 @* R" M9 E7 T1 `vCard格式:https://zh.wikipedia.org/wiki/VCard
% V9 ?! @' C+ I ? e) q: e: @( `( @% r
/ ]+ ~4 v# x) W% _- * Created by PhpStorm.
# i. O& M; s. E! L% F
0 E4 F& Z% b8 d- ~- * User: user
/ \6 f$ _* B* h2 T9 e% R3 s7 S2 x - 8 h' K# f j, |: _8 B }9 R2 S: l4 L
- * Date: 2018/8/15
! k+ Y2 a: P& F8 S# D - + t, A1 V0 P% ^6 D: j$ _
- * Time: 23:00
1 u" A- H7 K5 r5 H - : c; i+ c0 }# I* n- `4 W
- */require_once "./qrcode/phpqrcode.php";/**
9 s2 j# B; D/ U- j% }
) W# q' J! |, t- * 生成电子签名8 g; l I9 v" m
- / G* G& m: H) I; _' l! p. g
- * PS;使用微信扫描二维码+ b0 O: n3 Y x" ], N# C
- " n; O& y( g! y( e7 D
- */$content = 'BEGIN:VCARD' . "\n";//起始标志6 d. _8 _: P+ U( T# f
9 u/ g }% w, u e9 a, L5 ?! a) v- $content .= 'VERSION:2.1' . "\n";//当前版本+ u/ q) _8 O" ^% y9 t+ }
- 8 p% ]# a0 O% ?! k
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名3 |6 c& _! P% F4 F& p4 O
- 4 [9 L5 f0 ]* ?: {( d
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
* {) G4 `' y+ Y& {6 t4 @7 x8 m# G- i; O - 7 _# `2 d5 d. c* h% f$ A
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
v+ I x: i. U. m4 R$ k6 r! ^* S - 1 o v; q# ?/ L1 k3 q2 [
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
9 Y* Z/ T1 h. Z* T* V3 x5 l
6 H" x( z6 z& H1 r( |5 v& e. Q# i% {- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
1 J. K7 h- g# H% G9 }
& k! C* }7 L2 s- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)# S3 P: }' r! d9 ^8 T! E
9 ^( H# u+ I) z- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话# {4 Z0 `) m# Z2 v
2 J, L" @7 j2 k- ]9 M- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
3 x& W' T8 W- ?- y7 q* G
, p7 R0 F- ~) p+ X& G- $content .= 'URL:www.baidu.com' . "\n";//个人主页
( K8 F3 G, z0 n- n - : W8 Y/ Z+ t+ `0 r) o
- $content .= 'END:VCARD' . "\n";//结束标志6 {. V* A9 Q/ h
- , U @1 K/ t% X! S- m: {) X+ i. N9 g
- QRcode::png($content);
, o! X$ s& K7 n& h1 j - * M' _7 Y/ B( X: \
$ g' K' K( D7 A1 V0 n
复制代码
4 s4 C; w" w3 z相关文章推荐:
( h0 k4 X% ~- ~, C1 O7 L9 z1.PHP生成微信二维码实例+ {: v N( z7 X
2.php网址转换生成二维码
* y$ w) X2 P4 [% z7 w& y相关视频推荐:
% X, q& F }: Y. p: p. |1.独孤九贱(4)_PHP视频教程0 i- p' K# y, |
二、JQUERY生成QR CODE
) M* o+ p: J" m) a源码地址:https://github.com/jeromeetienne/jquery-qrcode. R4 F0 X" T% R5 h; J4 _0 K% i( e
. u: B; J( \% o7 o: e3 q
jquery_create.php
' O$ I) }- ]% H3 v, B, _3 A
@4 j( b$ y5 t- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
! X' d7 K2 P3 {6 P5 X三、PHP识别二维码- f& k" _ i0 a Z! j& O
1、方法一
+ V2 d0 s3 T8 l2 \. R环境需求,安装如下扩展
2 \* X2 z5 n- P- ImageMagick+ T- W. v' {; B. w+ g
- zbar+ x+ l: Y. r- U' }
- php-zbarcode
% [+ N! }$ @* [/ [2 }4 F9 h9 |3 D0 M9 Y
2、方法二
0 Q3 |- R* \5 \! wPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
! r% r0 }, G5 R; K2 F: b$ Z& |qrReader类:https://github.com/baagee/php_QrReader
7 w- X' i/ a& c0 I* T2 }) M
5 C7 T2 G# Z- X- % S! r- T! {" K
- $qrcode = new QrReader('./test_logo.png'); //图片路径
6 h. g; z, F8 k: P# [' r; S& V - ) I8 {( \6 m" S6 c8 j( [
- $text = $qrcode->text(); //返回识别后的文本
0 e2 |5 k4 n" q- C% `4 @" | - 4 T2 M3 ^9 R$ ~% }
- echo $text;1 n8 J' d) I! A2 O* h2 s0 A7 a
$ K( Y/ r$ n* R/ d( H! P
3 F% I0 p* n% p0 i
复制代码 0 e2 \* L- ^$ I: Q$ @- e4 j
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
4 s! m6 O3 s) y0 u
) ^& r. ^( u7 k( J1 f: t, m3 P% u3 Z& B. _
- t$ R2 }$ m* Q
1 D( K& Q3 k5 z' D+ F0 D& s+ R
, C/ e9 p6 R: k0 a, ~7 ^
& @8 {+ H4 t5 q: a
) J: }1 ?) Q2 w: W3 s/ }# g* e2 M( \/ O9 R: t3 ?+ v, Z. i
4 M# y' r$ l( c3 n* `3 s
|
|