管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
" { I* K4 p* M---------------------------------------------------------------------------------------------------
& Z# I: o% _* H# e, H* T# {( r二维码的分类6 w: X& b7 Z& Q# ^: {' M4 {6 J
线性堆叠式二维码; f9 ^ h$ C, ^+ W: i6 l/ H7 f
. v& L2 m! d. a2 P* W( [# n% p
矩阵式二维码
6 F, l& Y1 b* v% A' \5 E
, s7 `/ G4 {9 r' q6 {/ x+ l二维码的优缺点
8 v0 Y! W2 _. b B3 Z4 Q6 c8 _2 k优点1 f- C2 L) ^. L& |$ l
信息容量大
: r0 f G' Z9 v! b
. M. Z* z, C( q: z) d, g& Z! s编码范围广
" D( q% G7 G; J3 Z3 \/ B8 Z; j7 H6 Z* G; I% |9 H' q
容错能力强! H0 y8 G( w% r# u; i; v. u
( K. A% m- l# v( n+ [, V
译码可靠性高
/ J$ j- Z9 G7 _3 ^, C/ v
: `/ a' C! o4 M c) y可引入加密措施
- l0 G# G) S$ Q5 c; ^4 \' f
: y' s1 v, X$ p j# Y' Z& Y: l+ }成本低,易制作# f) A: o" V: Z: }! v: y3 w
- c1 k; Y) f8 m- J' q缺点
0 `. v0 _! E% @二维码技术成为手机病毒、钓鱼网站传播的新渠道3 y4 y0 n: i9 }) K" R9 I' h6 e8 d, Q
7 L2 a# v0 o6 l6 ` f# q2 R信息泄密
9 y* f" X- B" o0 I
" g, n8 r7 X7 H; { d8 k3 `目前流行的三大国际标准
( R1 r" l2 [0 ~: e1 T1 ^$ tPDF417:不支持中文0 Q4 T" M4 Y# f0 ^: @
! ]6 r; i: E1 h. W2 B& FDM:专利未公开,需支付专利费用
1 G0 p' z* l$ t2 W( Z
( u9 h6 T8 g" |3 x! o1 k& i) wQR CODE:专利公开,支持中文( `+ e: Q5 v( k7 j8 X# \2 F
# ?/ S2 M) q5 ^QR CODE 纠错能力
, A, c; D, J) }8 NL级:约可纠错7%的数据码字% a/ ]! V$ h) W, }# f& C
( m7 k0 g0 [0 m1 fM级:约可纠错15%的数据码字
6 f& L8 b9 z( @7 h* t' C( B7 }% p" Y( ]- E
Q级:约可纠错25%的数据码字0 i# P8 [* {7 w; Z
9 L7 ~( v: p9 k& J! ]6 Z7 |
H级:约可纠错30%的数据码字
+ |& s+ S* @/ M' `' C
" m* ]' w+ t/ M) _! V% ]/ |前提条件( B* B! Z5 e& P$ x; e8 X
GD库
9 p/ F8 q' Q# D; G, W
. m6 p% }1 {, q( Q9 X一、PHP生成QR CODE. O+ I: a( ~6 l* M/ `
官网:http://phpqrcode.sourceforge.net/& r3 L: O7 X q! v4 w. O0 S- V
. U6 }% f L6 F: w下载源码:https://github.com/endroid/qr-code
0 O: n, Y8 u& p& C0 X
w7 o2 B9 |, \5 i: M目录结构# O' c$ W( g# [4 Y* ` N
: m* P" X; i$ c1 _; t9 V& N$ K
# Z+ a; E2 k! M; h% p1 q# S
1、qrcode_create.php# y8 V$ l! W; s) w4 _4 q2 Y
ps:生成普通二维码& S: z J% u' x, Z8 ] f
- 7 e( D `4 Z/ }) ?
- include_once "./qrcode/phpqrcode.php";/**, L3 O: j% U# |4 P
- ) h- c! H2 S7 C5 Q' ]
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径2 ~. X; W# o9 J$ Z
3 L& D1 X' R2 u1 X/ \; k- * 在浏览器上直接生成一个二维码(内容为abc)
4 p2 a; B; [( U) Q0 y2 Z+ e
7 e& l1 ~; |+ t$ F( [# O1 B) O- */QRcode::png("abc");. J5 q! U) R& m: U
- 8 t7 G8 d- x+ l) P: b- d
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**3 K Q7 W$ H: e0 R
4 ], ?6 H1 P( R5 n4 S* O) `# w7 `- * 生成文件到本地
[- g/ U* ?& J6 q; X! @ - . O/ w! y7 f. R
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
0 F4 s( R$ s0 i, m - % R+ i4 n) s" V) p& d0 n
- * PS:$saveandprint源码的p6参数做了修改
* k @! C8 Z; \2 L% y' ~6 |! B" S/ x
: q7 p9 m) b6 a% n, Y# w" E- i- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);5 a/ {7 y! P( w+ n9 i2 H' `& h
8 ]. l( [- j& h9 l
! }- O2 s5 ?+ g1 K V* v7 M
复制代码 # T# Y* U' E6 ?& X8 Y; m
2、qrcode_logo.php; r9 W: C7 f8 }- }+ Y: q) ~* H
ps:生成带Logo的二维码
. l" [; A4 H- |) d. P7 L. w/ H0 ]9 ]- /**8 l( t6 T& U1 ^! O. e% F
: I b% ]7 O5 T; z9 H- * Created by PhpStorm.$ U- A4 K' w2 t$ d! @
5 q' A. S: I: ~ p0 O3 i- * User: user
- m, C8 t) o/ Z/ g/ v% v1 d* ?3 R - " j) R8 R6 |* I. S% Z8 n
- * Date: 2018/8/16
& o1 R5 y3 ]4 a. A
- y5 l- f6 D4 M1 K7 a- * Time: 10:430 d6 u3 v; r3 X
5 S4 p/ P4 t6 T" O$ _5 B+ k, C) s- */include "./qrcode/phpqrcode.php";$txt = "测试内容";9 L5 n7 T: F" O, _3 f
- ; @. }7 V* M9 f7 `
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
* Y5 b: S6 N0 E" B* ~; U3 [
# R* z6 K8 R" _; a$ D. r4 f7 r- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
: T( K5 q; S( @; P$ ~3 H( d) Y
4 Y! f ?& L. Z- $margin = 2;//边距
1 O+ o7 R) R( g q% g- G
1 s, W5 F/ W4 L$ d% L- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
9 W" i* V( t' K1 d, Y
7 J4 b# S! r' A" e, ^; C! b- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
& o/ K! g) l* J5 D
2 ]+ C+ u9 ^2 D- $QR = $picPathAndName; //已经生成的原始二维码图
* |" \. ?2 D$ e @" L- b7 E2 T - $ k' i9 }" q- \3 b# Y+ P3 X
- $Logo = './pic/logo.png'; + U- b. l. U C3 d
- * Z% [; [$ u+ Y' E C2 A
- $Logo_re = './pic/test_logo.png'; 6 z1 @4 _2 u6 V$ B2 m1 D
- & p& @6 h2 P+ g7 w
- $QR = imagecreatefromstring(file_get_contents($QR)); + i$ a' a9 }6 A' ]9 i8 l8 f6 D
N0 q* z+ b2 L0 y7 Y0 I/ m; Y/ O- $Logo = imagecreatefromstring(file_get_contents($Logo)); 7 J! x$ g5 Y0 ~
! I9 R* |( F! u, j N3 P- $QR_width = imagesx($QR); //二维码图片宽度/ H R6 v% x+ L/ J- Z- Z
9 }; V0 z; P! i$ l M* z' K- $QR_height = imagesy($QR); //二维码图片高度
: x) t, w9 p( ?( z
. I0 }4 }+ x$ Q+ N- $logo_width = imagesx($Logo); //logo图片宽度6 `7 m' @" w* D; _5 V3 s- R0 f
- 5 p* ]3 j& t: b8 L5 X
- $logo_height = imagesy($Logo); //logo图片高度
2 g" M6 O" G' S. ^; [( Z# E- f
5 f3 ]9 X: W. L$ G- $logo_qr_width = $QR_width / 5;
9 q0 k9 ]* m; N) I - 3 M/ m+ E4 ~. f2 e4 `% o
- $scale = $logo_width / $logo_qr_width;
L3 s3 o+ }" n6 J* X6 k - R8 H) _: [4 n6 l, {( Y7 M
- $logo_qr_height = $logo_height / $scale;
) v! d# f" O7 A/ t4 k - . b g p) j7 e. }0 M9 {
- $from_width = ($QR_width - $logo_qr_width) / 2;) B( I. a U' b7 u3 z
6 u$ B5 h. y% L- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); 2 v( |( \. ]" F5 Z, h
- % `7 p& Y2 S- V& d1 p' G5 D5 R
- //输出图片
" a( F" ~3 ^ V% E1 Y' ^
" X/ f' }2 [) {+ _: K1 B- imagepng($QR, $Logo_re);
9 v) i2 v! O7 f/ e! @
# J1 k8 k3 G8 B; J6 E$ H: M" W1 m- }6 Q6 m4 a$ J5 @ k, n+ B% B
8 t- w+ H; I! E% a( s( j9 l" r- # K) u7 x) {! m) r% b
复制代码 3、qrcode_vcard.php (生成电子签名)
# i7 E/ X2 ]0 Z/ W- ^; r' F: V( G) x' V1 m& h0 Z& Q* Y
vCard格式:https://zh.wikipedia.org/wiki/VCard3 `; L0 A& Y" y1 h+ |8 T. k* M9 n
! O' S5 T9 n3 V8 C/ {- $ y" T0 l/ P' F# G, C- R) s
- * Created by PhpStorm.; |5 c: Q' j0 X5 C' H) h
, o5 w: D7 V" d, C4 S* s9 i- * User: user
: n0 X% r# |; h
) v* r- q: I. b$ J3 U- * Date: 2018/8/15( [2 z. P% i8 V3 ^; M
- ' {9 W" A5 y$ n* {3 Q# _
- * Time: 23:007 N' c- t q+ w; p [# d8 D$ f. P
2 k% @/ L* {, U$ E& K- */require_once "./qrcode/phpqrcode.php";/**+ Z' |* t1 c8 L5 N+ H2 N+ ]. n
- 7 m! W5 s# s% h# Z
- * 生成电子签名% p2 B, g: c7 w" c) R) T3 ?
- * g1 N2 j z. @5 {
- * PS;使用微信扫描二维码
) ?% W7 M! g& y - 4 h* T# G2 B- l0 q1 C
- */$content = 'BEGIN:VCARD' . "\n";//起始标志
; T M% G3 ~1 P. O2 R7 |7 g - 3 s# S. {5 i0 Q3 V+ \4 ^
- $content .= 'VERSION:2.1' . "\n";//当前版本0 O9 `* O! C+ u7 E1 j) x5 f( `
J! K3 I( t2 M) N7 i- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
+ V( ^+ Q/ \. w8 r9 s9 {
0 A( W6 ]1 O) E6 I- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称9 D- k+ N# s( \4 r" J& H
4 m3 A* h6 V7 o% n# Q+ F7 c3 C- $content .= 'TITLE:PHP研发程序员' . "\n";//职位+ g9 o+ F q1 Q, j2 C# b$ W
& t7 x0 x0 z0 ?# P- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
5 g5 M! Y8 i. @% }* _- z - 7 {6 x0 A( m- t* R
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址$ C' n: ? K3 F
- |8 \# H- L7 G4 O- ]) g! [
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
' G+ U, G' a$ m* \) |. ^' \
- S8 r) \$ ? E; n1 ]- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话- r% L5 v9 b$ Z; Z! m
- ) B% W5 Z8 y' ^0 L
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
5 b' B, F; v3 l4 k- S% g - 7 P v+ q ]" Q- @+ @9 V1 c6 @, M
- $content .= 'URL:www.baidu.com' . "\n";//个人主页: L' p- D& U. N; c: N! O B
- . o" A+ v* Q% |# v0 a4 G+ i. c" _
- $content .= 'END:VCARD' . "\n";//结束标志
# w. Y9 d" n) H - 6 U' @( n* _7 j# @* f
- QRcode::png($content);3 U5 E) H/ W$ P. N7 G
+ o* Z% I. b; t6 C* z- 3 Q }' S6 S+ b }3 O
复制代码 / G; R( N; U# O
相关文章推荐:
3 p2 |6 b( }' T5 ^* ~, p! {- W1.PHP生成微信二维码实例1 d4 [: J" o' d+ v
2.php网址转换生成二维码; C- {+ x7 C2 j8 f8 o- E
相关视频推荐: P+ E7 l8 x. t, |. P$ P$ V
1.独孤九贱(4)_PHP视频教程
1 h) D7 x" _' ]: o二、JQUERY生成QR CODE
9 h5 g k& m5 Y( [( e; C源码地址:https://github.com/jeromeetienne/jquery-qrcode
/ U) Y9 x2 M ~
& T5 I3 s9 b" |0 V/ Ujquery_create.php
0 ^: M# @/ g3 N; h; c* U. d
9 o$ |* d: z4 O- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 ! ?2 m+ H. j5 |6 `* [
三、PHP识别二维码
6 v% z; { G* e( f7 h+ V3 B7 E8 [- M! ?6 B1、方法一
- _9 j z. R' j( h2 w' |; G0 o环境需求,安装如下扩展
" w- N+ F% `) g: f- ImageMagick) f9 Z& ~! V8 S- V( h I: N
- zbar
; i, b# n, l8 R; E- php-zbarcode4 Q' a, q0 |. F
! o: P4 n3 U, T9 i) b1 M2 |" a5 h
2、方法二
. ]# j7 D: E" \& q! f# P5 ?PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以, E* [3 ~& y( O3 i5 Z
qrReader类:https://github.com/baagee/php_QrReader
, ~$ ]: h2 v) R& N" @
& x$ ?1 h5 V0 h- ! ]+ n+ n& p" Z! | Y6 k& u: h
- $qrcode = new QrReader('./test_logo.png'); //图片路径! h, \7 E; M$ p4 o) K" s
- , e, }, V$ i/ J8 X
- $text = $qrcode->text(); //返回识别后的文本% `# h* I6 n/ z( i3 V* i: S
# @' P) x) y' I- echo $text;
& T3 M8 U5 M# z3 n5 ?" J7 X9 E - / |" {( Q/ B* l) p
$ y7 n. T7 x" D# ~1 O! O: x3 J% v9 @
复制代码
- a' H/ o- Z& G3 U x1 b. U链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7, O% O3 k& x7 Q- L
- Q9 j8 p$ y) {: k" B* B; Q8 l
2 L( \4 p6 ^; H+ y$ C
( T/ O5 e( ^6 p) u8 |
9 ]! b& n7 ]: B1 g: f' q3 t0 v& b0 a# @
* m: C/ R9 h. A ?+ e/ z$ B3 p
% Z- P! Q7 Y+ h/ Y& ]' c Z- U) @& N& O; j" h) R7 M# R0 t
( t- s0 L& Q! a1 r& @ |
|