管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
, w- T+ w4 _5 x2 k" r4 V# l4 b--------------------------------------------------------------------------------------------------- o$ ^$ {7 R* `( m1 Z! `
二维码的分类: n# a* \. Y) V- h* C8 t& i" F
线性堆叠式二维码; K# N, T8 }6 c- c
3 @/ C6 z! ^9 Q矩阵式二维码 i0 F8 O% z; i9 Z
2 z4 @! \5 H9 E二维码的优缺点2 e8 H. q* A8 @( p
优点
6 Q, |2 }% N- x; Z7 i) f0 J- w7 o信息容量大
; t5 Z; c( W% G; I) o. S2 i0 M0 _5 a4 E$ M4 M: M0 k
编码范围广
7 v0 U" c0 s4 _& i; g8 I7 \6 k9 g" m5 k- Y, w5 M
容错能力强+ m, I* s* W+ T
6 E. Y# @. K% K- J6 U* h译码可靠性高
+ M- N G- F( S6 L$ j) z! A; y1 }( T7 L7 J0 V6 G W( D
可引入加密措施5 l _, Q7 R( q; t5 b
4 R) S' a1 S( J; D: _
成本低,易制作: [: O9 A7 p0 m- C5 t$ T
, W' p$ N0 x( J6 R6 G# b: M* v8 R: k缺点
9 e3 E8 F' G1 {2 c7 G. V二维码技术成为手机病毒、钓鱼网站传播的新渠道
5 {1 B( `/ q( v# j' x( J' o1 b4 X5 B9 I1 p! }
信息泄密8 F* Q3 ]6 H8 A8 d- z
! O3 J# ]9 A) ~& @0 n& \% _" e0 s3 A目前流行的三大国际标准
9 ]1 r2 Y3 c' e. h) {! @PDF417:不支持中文
$ P- ?+ K# `: ^, G0 p4 w
3 ]- w$ Q( b( XDM:专利未公开,需支付专利费用
$ T: d H& D8 m" n4 o) j
0 u3 X! e" \/ V& \QR CODE:专利公开,支持中文
/ b2 n" t8 q, B" j& @0 J$ v4 K
- z2 ^( _5 y- d3 AQR CODE 纠错能力3 A$ ]" U3 u+ T6 @
L级:约可纠错7%的数据码字& o! `0 Y- M5 D% c9 T$ c [3 z5 X
# k2 v0 X/ N; l# z
M级:约可纠错15%的数据码字3 x% @: d9 K0 K# u
8 i4 X+ q" N! i5 k
Q级:约可纠错25%的数据码字
( G. c/ i" F6 G- T% d9 c1 ^) Z* M1 F4 \7 i
H级:约可纠错30%的数据码字& K8 F; R) F# ?7 Y x
5 M: t: m# f$ Z5 E前提条件1 `& W: g- y9 I- ~. E! K
GD库1 S' Z! f3 H5 B" z/ s
e, q9 J( T& l# K一、PHP生成QR CODE" A, \8 E3 D* E
官网:http://phpqrcode.sourceforge.net/
; I/ S2 e' d1 w& B; U. G* @& L1 k
" Q6 }+ q6 v! d3 m- B下载源码:https://github.com/endroid/qr-code
: H7 J5 D, a" ]$ ] M
6 Z5 e) L8 ~# c8 Q目录结构) r+ z" P- x$ [/ p
( ^8 ?; w+ p9 [
1 L& i% ~0 N+ A7 ?. ]2 v9 A1、qrcode_create.php
( |0 @; \$ G2 Z; Aps:生成普通二维码
( l1 Y, F3 l Z* q" t- ! K+ I0 a; T3 }9 X0 \
- include_once "./qrcode/phpqrcode.php";/**% F( K; f+ h/ X/ {2 [, S r
- . u) r9 [1 ]2 B1 W4 E. S5 G2 _
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径6 U, F! ^9 ~; W) c- `+ g+ S, _
- 9 w, }" t* q' b, c) t
- * 在浏览器上直接生成一个二维码(内容为abc)" ]9 P6 ^& W7 D8 T0 f
9 o: Y+ G/ `; Q% F& u- */QRcode::png("abc");
$ q% K. [; E% t/ d! U+ \
& m% G! X Y9 y7 d- n( G2 Z- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
: T6 k% g; d7 L# u' g. h1 S - " g" I0 v2 Y, a8 u' I; s) K8 O
- * 生成文件到本地0 t- ^, k" W; m" X! W1 X
- $ i% n$ z+ X! u/ w" M
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
; n Z* Q- ^% a( l% v; y" S
3 L8 }, Y' E) G# i' A3 k* z- * PS:$saveandprint源码的p6参数做了修改
6 ]3 P# ?( z! Z3 W
2 n! w( W }% Q0 n; T3 ]- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);/ n) C" i) T9 e5 T
3 U" T; o2 M& p. }( r0 k- m8 V
4 D- i" p9 ~" D) `8 A1 Y# B; F
复制代码
% O4 T3 K/ s- w* H2、qrcode_logo.php; P; }' V! {/ X/ H/ d( b7 L
ps:生成带Logo的二维码- - e" a4 c+ x- X0 s
- /**
& @8 ~9 n% c' G
4 q3 I8 z8 _& H! ^5 v- * Created by PhpStorm.3 v( U4 ]; q( d9 f6 r& B+ V
( n1 E' ?8 c' l. I z5 k- * User: user
6 k# m9 d. L* v2 L
* W/ A b1 _8 F5 n- * Date: 2018/8/16' F7 B6 ^% I' q6 u! U4 I
6 B) x& N' p+ X/ {$ ~$ I$ b3 P w- * Time: 10:43
7 ^ P0 p# h/ t
3 f' h+ T* D: o* C U- */include "./qrcode/phpqrcode.php";$txt = "测试内容";5 m$ E2 {+ x: x* i! i8 [: ?
- ( c4 J0 L( F7 \! b
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
$ o! ~! t4 J# Q, O: m
8 a) P3 N5 X8 U! R4 i- n- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
( _0 p! ~" E& a M - 7 o1 @; d5 o. p! c
- $margin = 2;//边距
8 t% Z. E* w9 N4 D3 z9 q2 U; L( I8 x* U - ( D! g- N8 ?3 R- O: y. ~+ K
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
/ x, Q `/ K- s) ^ - 5 D7 e3 e) I6 _ [% `
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ : f( I& [) E0 {
, a7 `& J+ S! o0 \+ F- $QR = $picPathAndName; //已经生成的原始二维码图& i- H/ R; d+ n
0 S4 p7 o: A, O- $Logo = './pic/logo.png'; ) b. W. c1 K r$ ` F& g4 u6 W. a
u7 D1 @) U; u* U' n0 W- $Logo_re = './pic/test_logo.png'; - _" u( G4 u7 ^8 L G8 }8 o) l5 p
+ n1 O0 F5 {. ?- ]2 [- $QR = imagecreatefromstring(file_get_contents($QR)); 8 S5 Q- q' I# z' d
- ; G3 r \9 X( g+ U4 v
- $Logo = imagecreatefromstring(file_get_contents($Logo));
! @& T1 p8 `: d. D% w - ' j# ?3 Y3 s4 h2 u, n
- $QR_width = imagesx($QR); //二维码图片宽度
! Z3 ?2 T" H9 H - & i& W& s. p! n7 ]3 G- z4 S
- $QR_height = imagesy($QR); //二维码图片高度
/ p% _+ Q% y1 e* `7 m: p4 U& A5 r - : V: \+ d' m& t6 I& f9 L/ l) s7 A
- $logo_width = imagesx($Logo); //logo图片宽度
! _8 y% e/ O% b' {% b5 P' [0 R9 n, a
# k1 ]/ {( H6 |1 `/ ], {2 q" G- $logo_height = imagesy($Logo); //logo图片高度: \$ s, c2 v5 _) m% B
- . r* S, ^) z' l L8 K
- $logo_qr_width = $QR_width / 5;
; J- s* }* Y2 Q, {5 X! J+ c: A, X
. d& _0 D, {' A! n! B5 ^0 ~- $scale = $logo_width / $logo_qr_width; . X) t" I% d. D
- 1 L% t0 N2 i4 Y) k+ K
- $logo_qr_height = $logo_height / $scale;
+ H/ K- g) L; E - 6 ~2 _9 ~4 \. ?) d
- $from_width = ($QR_width - $logo_qr_width) / 2;
/ F4 M: }* m {. v0 b n, w( } - 3 c7 p% E: M% K z
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
3 x& ]6 `9 m4 \2 W2 s' Z - ; Y) b; C7 K( {) Y/ v. b ~
- //输出图片& E5 e- N" h' N
- 3 v0 r v; v( @) s5 Q
- imagepng($QR, $Logo_re);
0 D3 O: g3 Y/ u V& a3 w- l
/ Z* F4 f* H; W7 q- }2 [ t& _" c% @ w
- , b' @7 U% v. F. r
. W! ~7 C% r. H! g
复制代码 3、qrcode_vcard.php (生成电子签名)* x9 f( {! I0 k9 b/ z2 R( a/ {5 v
& G' ]2 ? L* P7 r& @
vCard格式:https://zh.wikipedia.org/wiki/VCard. k( Y4 U/ a6 O" V' O
8 g' T; d% k A, ^2 p5 F8 X% F8 _8 ]- 4 y3 Z+ s( a1 m3 b
- * Created by PhpStorm.
/ K/ F1 p& _" i5 b$ j5 D7 G
6 C* z3 L- Y! F: U) ]% s9 e- * User: user
0 R& n: g7 U5 |2 t1 b2 `- c6 p9 v - ) U: V9 ]7 P: f' T0 n3 @& `, `& x
- * Date: 2018/8/15" g4 Z" F. j i) o" h& v. ~0 T
5 e5 v" k. s6 g$ n$ ?- * Time: 23:00; c, b2 @% H' H3 {7 @2 ^
- ; j2 P) o8 M5 v% F
- */require_once "./qrcode/phpqrcode.php";/**7 X$ F3 A3 u9 c% G) E& s# E
. C( F5 v% {" ^- }. K9 J; V M- * 生成电子签名 O8 f1 @* _! g& p
- 8 n- R/ q8 z0 W) z( D
- * PS;使用微信扫描二维码9 U% s1 h6 R" {1 S `) B( h" q
( S& i9 i8 }; l# l Z- */$content = 'BEGIN:VCARD' . "\n";//起始标志
( K7 |: ]) _& G/ o - 1 z" y% ?! r- ~7 j8 e/ w4 h- k j
- $content .= 'VERSION:2.1' . "\n";//当前版本
( s" b- u1 I% B7 \, ?7 H* W. `
7 x7 N3 s K. Y+ S. Q3 ]- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
6 ?1 I9 ~# }& i
1 A8 y% x: c, d2 A' L- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称6 P9 k" \8 S' j) K% W2 Q; D/ l
2 V0 ? Y) m! V0 C- $content .= 'TITLE:PHP研发程序员' . "\n";//职位% t, E8 ^( `& F N' Z. ^+ i0 p
F" C+ ~5 ^3 u# m1 o6 Z6 @- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话9 i0 a7 y* m$ M' t' S, e; f) u' `
- & t# j0 O0 _% \1 P% t# G$ M/ j
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址1 p9 W1 R# E, S
- " x* z- z J4 X' a, t1 c
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
! [ q8 ?0 ? g, _; _
' I' J% }" P! f3 _9 p u0 @- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话, S. h' X( n! g% [1 S
$ X" D) N9 T8 \4 d j$ @- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
& Y, b. j/ V6 B8 W1 ?8 v - # S3 a4 m& {1 i0 m5 `' G E
- $content .= 'URL:www.baidu.com' . "\n";//个人主页4 C) ~- i3 E6 k9 q" b
- 4 K; E& F9 \6 ?# Q# i( S
- $content .= 'END:VCARD' . "\n";//结束标志
0 q( H, A. I6 {1 y
' M; P; f* k G l- QRcode::png($content);/ }% d) O8 S$ w V
- 6 u4 d# T3 }5 `* O+ u) S, V
9 F0 t3 t8 n2 l* E7 @, i! F* o
复制代码
2 P, K* g! {: i相关文章推荐:9 F; A* b3 a, A0 V
1.PHP生成微信二维码实例
( T& k. L( M, t p) l( p2.php网址转换生成二维码, W3 {5 l$ j& _( ]1 L2 H
相关视频推荐:7 T! h8 e# R* J: y' |( u6 r7 G* G
1.独孤九贱(4)_PHP视频教程4 Z5 x6 c% y t ^& e, |
二、JQUERY生成QR CODE$ |6 X& j+ ]1 g( }3 B
源码地址:https://github.com/jeromeetienne/jquery-qrcode/ j- o, j4 Q6 K
( ?( c; Y% p s* O
jquery_create.php
( \5 i, [( T' ?" n) ?8 B9 S
% W I( m: ?9 z& N+ E- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 2 l' y) |$ i. e, w* v
三、PHP识别二维码5 S9 q/ s2 D% b& Y- k
1、方法一
' l, z. f6 X; y, i0 J环境需求,安装如下扩展
) Y9 D/ v3 _. G0 d0 L- ImageMagick
/ Y5 y0 M7 c$ i& n- @! ]' } w- zbar
% ^) H" e+ s! B8 e. g; g7 v- php-zbarcode
V; ~# O1 @# o6 n6 L: L4 B( q! H3 E5 [0 x M( [ a4 t
2、方法二6 R& P v( h# n
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以 D! r- D+ e; K5 K4 Z, Q9 @9 K
qrReader类:https://github.com/baagee/php_QrReader
5 e2 t( c6 u5 s5 {' d, d7 `$ S
) W4 e# M+ Z* e6 G7 G/ N; T; ~ n+ e
- \: o4 K7 M! t1 E' v- $qrcode = new QrReader('./test_logo.png'); //图片路径
. a X' k% h/ m/ l. ^
" B2 L* k0 B* M2 J% R3 C* t& {- $text = $qrcode->text(); //返回识别后的文本
9 J/ `4 c: d9 R' A; L- | - " n7 O5 F5 i# L+ W3 B4 n3 X8 e
- echo $text;" C4 Z( ?3 r1 Q: S$ P; @ p: U
- F5 y. e! f7 b
- 5 N; p, H9 {. w
复制代码 % t& U; `2 n4 n! j. I
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y73 n; V- o4 Z( J$ x' n+ N
% t1 G! {; F7 E8 w* ]
! W7 O" M+ ~+ b7 k' B; O3 Z
0 I- j1 o) P( t, M. R: U# M( p0 j) N9 f# M: ^' u/ `* i
8 O& Y3 ~( W% n$ o/ I
U: }8 W8 i. @2 ]& I
+ Q' [) g* n8 o2 b9 d; B4 S
. G% j$ O5 r# ]# \: d9 `+ ^9 Y
, ^1 v( w- v, w# P3 ? |
|