管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。; s; O5 t& [) b5 g9 a+ I
---------------------------------------------------------------------------------------------------
* J- N& [$ R6 c3 L# _二维码的分类: T3 c9 R$ s) }
线性堆叠式二维码' W' \2 L, \8 B/ Q1 x
2 T8 b h/ u3 A$ l- ^8 i+ @
矩阵式二维码# A1 X4 o7 x* P" Y
d; [6 R. E+ x) v! _, S' G
二维码的优缺点8 F8 f! ]) U. T& E# `( F
优点
9 M9 H0 t6 s- t9 G0 o信息容量大# ^8 T# J: V3 Q/ f
# _1 X0 m6 G; S$ N
编码范围广; }% Q& a' v' d$ M2 F- c
3 D& V1 i( d+ _* C4 {容错能力强
# r) g" V; `" a0 ?0 M( E
, ] b# `% u: v' r3 S3 ^5 A, N译码可靠性高
8 [; x! X7 `. Q c* X/ Z
- H5 F% I. p6 i可引入加密措施; u( \* S2 q4 ~% B! B
6 {! }% n- E4 }2 c成本低,易制作! M( ^( H* K5 \
" x. A- @/ _6 ]# g
缺点
) ]' \; S: Z5 ~2 l3 W9 u! [二维码技术成为手机病毒、钓鱼网站传播的新渠道' E5 L- m& A$ x
x& x$ H: j- b0 n9 S
信息泄密& Z; R# Z% r( e- W* y) c
3 D f$ O: d) n+ J) v
目前流行的三大国际标准
+ B9 B C. v+ u/ bPDF417:不支持中文
0 Z( m, b. ^ g4 q# P* O0 _! w6 X
' n$ `+ G% L6 Z1 A6 JDM:专利未公开,需支付专利费用
) U S' O% c: Z5 D, y
9 @; Z6 w* m! i4 A+ N dQR CODE:专利公开,支持中文- [/ Z. p1 j" x$ S& j
% Z# ^9 l& k7 n; Z+ j
QR CODE 纠错能力
8 I/ n! e. V; u, [0 e, t8 QL级:约可纠错7%的数据码字+ D3 D) x" _. D# g3 ^% E4 z: {
* e, h1 b9 c `
M级:约可纠错15%的数据码字
6 c* {/ a/ ]# ~9 R5 q; q. F- S2 W h3 f" u8 A+ d* ~( }4 `) j8 K o
Q级:约可纠错25%的数据码字. m/ |- P/ C2 _ Y5 z: K
; g* U5 i9 A' Y+ q+ q4 f( MH级:约可纠错30%的数据码字6 W$ z3 _7 x$ F/ T: W0 V; Z
1 K- s( Q- \/ `" p% h
前提条件
' T& ~0 }( j1 R# ]2 v) n. p# ?. lGD库
- _3 T9 P0 E6 y1 e# s* u
: O: K/ M) w7 C1 L% ^( P4 p% l一、PHP生成QR CODE! O: S: e2 ~, c& D. w: M
官网:http://phpqrcode.sourceforge.net/
' M8 ?4 L" B4 I8 a3 P- u. h, H/ t/ X+ h
下载源码:https://github.com/endroid/qr-code
@& j1 O) T) n- P
9 Q; B3 `3 j4 C2 I: q: }7 _ V目录结构) x/ m9 n9 L- K' Q5 a5 Q
5 T5 u! k! ~2 F3 A& b$ N
5 D4 C, y. v: Z1、qrcode_create.php
# L" B7 Z, v- {ps:生成普通二维码
3 H R4 h/ |* Z* a& P- # R( \0 e4 u9 E& d6 S$ y
- include_once "./qrcode/phpqrcode.php";/**
, E- S' X5 x9 v5 n( T0 p% o
( Y( b5 F3 D5 ^! r0 g* y- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
/ _. m& Z4 d; d; ~0 H! M - ( p" p6 Y6 w, R9 m2 W# y4 R$ U
- * 在浏览器上直接生成一个二维码(内容为abc); Z5 ]0 U6 ~; A- W% ~
) U' @9 F$ h4 {. G- */QRcode::png("abc");
6 v+ c0 I5 d5 `" r) T
& R5 r- A3 ?+ ?8 v( Q) t- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
. ^6 T0 J' h* J- u) e - * ?& O8 N$ D$ k& _: x( l) r
- * 生成文件到本地
- Z2 G/ @" b; {3 Q2 ]( j - ' D7 C6 L, a1 k' F2 @8 U
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印) N3 I4 }# y/ q, ~" P
: X' o( n$ p3 s! H- * PS:$saveandprint源码的p6参数做了修改
, z3 Q! b% j' H. f1 ^% O/ P - # t) }. a9 [. c4 q# m8 _ [
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
C; O8 @# h# y- a9 t$ { @$ T
5 b5 T3 n) Q- ]0 ]- ~0 x- ?, v! f- ; S. `: j/ X1 @9 h1 Y3 N, ?
复制代码
, ?" `, }1 P: F8 x" b2 P2、qrcode_logo.php
- K! ]! Q/ H! a ^! Ops:生成带Logo的二维码- ! P% [, {8 L9 I
- /**' g% D }4 @# ]6 h) i3 c- J, I
- 8 x R+ k2 o- X% L! G
- * Created by PhpStorm.- O Q* I% c5 o+ I3 s7 a- Q
- / p9 C: l! s" _% ]
- * User: user
" ^ H+ h8 m7 M, [; a7 [ [ - " B. n/ B5 Y; |& l+ d
- * Date: 2018/8/160 J- x. @7 b- M# U- u2 V' X
- ( _+ ?' t! b; ]$ r g
- * Time: 10:435 q0 n; f; H- c7 O9 ^
- 6 ?8 I; w# `) Q' `
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";$ ~4 k6 {' L5 t5 G; Z
( R% @: I- e- S- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
$ M. @" H8 b7 Y# Q, U8 K7 j
3 V& l5 J2 H) }) t( _5 [- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
1 |& @/ Y8 x, K6 I - 6 a: V+ A x, o1 ^+ j
- $margin = 2;//边距
# P" y& P w0 l/ T, r/ h2 l
! ~: `$ C3 T' T H2 b* O" O* f, T- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
. o& P, J- Q3 U6 l
5 V% ]5 K2 R5 Q. S8 N; {) L- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ 0 P+ P B+ m* a3 Y& V( N/ ^
. ^. J% s) u6 i7 {/ S( {' G) d- $QR = $picPathAndName; //已经生成的原始二维码图# R; j6 S: y& E% x% q
- ) Q3 W0 _( x$ i% o$ O! F9 P
- $Logo = './pic/logo.png';
3 ^% L- O& }3 @7 K: Z2 t5 G
; f* z) {# k& o% G" R' N- $Logo_re = './pic/test_logo.png'; 4 @/ a8 l; O2 k0 O$ p( F! {
- ! w, r9 W0 b1 F) L4 ^ N# }) r
- $QR = imagecreatefromstring(file_get_contents($QR)); " j, X8 l2 w, N& N" ~7 I" X* h
- ; J0 R! _! J3 J
- $Logo = imagecreatefromstring(file_get_contents($Logo)); 4 e+ u/ ?: F& U% }) t, `1 |* `
- ! M4 A3 k4 V. b
- $QR_width = imagesx($QR); //二维码图片宽度5 E1 g: A9 d% O. G% ^, h5 Q5 d3 m
- % J! W- w; M+ e* E( m
- $QR_height = imagesy($QR); //二维码图片高度
3 M, _( R( i, r
: `) @. Z6 \4 U# }0 N- $logo_width = imagesx($Logo); //logo图片宽度: k) T8 l! r9 }% ]: \: M/ a0 P
' x7 j$ P% P9 ^: P& b. q% T- $logo_height = imagesy($Logo); //logo图片高度
6 d3 B# M* A: h. k6 |2 r - 5 @1 x; O$ J9 ^7 E/ q# W
- $logo_qr_width = $QR_width / 5; . H* F+ g% L) m5 `, n7 {+ z
- 1 \5 A6 \9 d% J% o" [
- $scale = $logo_width / $logo_qr_width; / t( E. P* o6 i& u8 \' z
9 R. p) h7 W* D4 [- $logo_qr_height = $logo_height / $scale;
: v: s8 G" _8 l! H
) w9 M: B! {2 c! x6 f# e( H8 y- $from_width = ($QR_width - $logo_qr_width) / 2;6 A6 X1 h% }3 r& k
- ( K* T% k6 ?3 P% I6 r
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); . A6 K% @; F' z$ \* N2 Z
- ! \7 f7 o7 G9 A. W. H
- //输出图片) N7 d- S6 x6 [9 j/ m6 h$ e" \" a; [
8 Y$ V1 R) U) e- J/ a5 f' [- imagepng($QR, $Logo_re);$ X+ ]' @* H# y. b0 S: s3 c
- 9 {- q* y1 G3 ?0 t- |/ S; C+ q
- }
! l9 s: E$ `# P- C$ L; Z
- i) `# d! H, i5 p1 L
8 C- I6 a( X. Z$ |8 C
复制代码 3、qrcode_vcard.php (生成电子签名)1 T4 q3 f: D# E
" C; [8 g. ^' |7 |$ hvCard格式:https://zh.wikipedia.org/wiki/VCard
9 c1 \4 e: [( h. F4 K% x
' J! {& a; ]$ Q6 p1 v- * u5 y% D8 v/ g
- * Created by PhpStorm.- y. {3 b! j4 |0 R$ v* `
2 g: q; m* }& E, \5 m- * User: user3 N3 _, P7 h6 x# u
- 9 \+ d. ]4 ?# G; o
- * Date: 2018/8/15
5 j- w! [) f7 S T
4 Q$ C- I& B! V E- * Time: 23:00
; n( o9 ?1 R% u+ D4 b
7 O2 F0 W5 ^% W- */require_once "./qrcode/phpqrcode.php";/**
/ O i' m3 p0 R7 X" O8 C
: O2 _/ {! O6 d, S' i/ |- * 生成电子签名
8 H: H9 l [9 {0 n4 s7 h
) a) o% I% a& a. K3 `2 g5 \- * PS;使用微信扫描二维码. p$ x4 _5 u+ x9 j6 C
- " V, p3 U g, r @* {3 S% Y
- */$content = 'BEGIN:VCARD' . "\n";//起始标志
1 |9 `5 H# L5 h9 }* v; _( N - , @5 n" G! _7 J
- $content .= 'VERSION:2.1' . "\n";//当前版本. w& P6 I0 Z$ } z/ C E
- 6 G# h( Q$ F5 i8 x3 \. o Z
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名9 R9 a9 [+ O# G0 Y
- ' ^' k* I2 q! B3 Y6 {$ X, u
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称. R" h. j& E; H: k. C
- $ m* i" {5 A/ o& h
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
+ m6 t& B5 c- U. b
. E* U9 p! F4 V* K- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
: j \) J* r+ a2 x$ D/ \, B2 ~ - 4 k) ~ `0 p1 |: @6 G
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
& @0 B6 o" i7 H6 B9 {
: H+ G2 n' s; `2 l) k# G. g4 \# S4 B- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
- G$ `+ ]& R( i6 t. j. E
8 i2 O5 w4 Y; h% g P- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话 |: C% U5 B9 M; H" j$ K
8 i! ?0 e: t* J8 z. g- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱; |3 i! H6 i9 f( O9 n6 ^
% @5 S5 g1 Y6 b6 g- $content .= 'URL:www.baidu.com' . "\n";//个人主页 |; Z* h* X" l; K1 V0 p5 a1 o
- 3 P5 Z# ?% ~7 `% Y2 _) P( F
- $content .= 'END:VCARD' . "\n";//结束标志& m1 `: w8 y4 b# Q+ E
- 3 X( W5 ~9 i7 }. A- S
- QRcode::png($content);: k/ s8 a3 r- J1 |) c
- 2 q( u& @9 f; S; V" d3 f n- t
4 A. j9 x# z- X2 q$ m
复制代码 - U# ] l3 V9 X$ r7 q8 R
相关文章推荐:
) ^9 P3 J6 u( t% h- F# S/ g) |1.PHP生成微信二维码实例0 e4 _! {6 T) l( T
2.php网址转换生成二维码( v4 c0 e' T/ C+ E3 D. f4 b
相关视频推荐:
M4 k4 L* _. ]8 p! |- ^1.独孤九贱(4)_PHP视频教程
3 b; S+ i8 Z: O* `1 l二、JQUERY生成QR CODE) x; b6 y+ s8 D Y5 L* J6 [
源码地址:https://github.com/jeromeetienne/jquery-qrcode
1 c$ v. m, n( O6 V$ ] C- b' N& }: z4 H7 B5 P6 p" L
jquery_create.php) N; z3 H4 y( g- G* Q: R2 \
' ^5 ~9 \* v$ g/ P F+ F7 e- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 / }- n' D2 }; U" b/ Y6 g* ~
三、PHP识别二维码( ]+ [* z7 [5 F) o: `: A
1、方法一
( e7 G, O! y! Y! R! M环境需求,安装如下扩展
# ?4 o/ m! Q M' Z1 `- ImageMagick2 k( i# |1 n- ~4 r) _6 U6 k
- zbar1 N$ d. K# m8 u% b2 ~& V
- php-zbarcode
7 t' N) i, O) p8 h6 ]* Y- y2 h
' f6 z4 n5 W+ T2 G( a. j+ h3 z2、方法二
/ L" o' @" `$ B& xPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以# N4 p" e P" z1 o; v8 k! U
qrReader类:https://github.com/baagee/php_QrReader
; J9 i- P) J# f- F7 c/ E# W$ ^* y6 Q1 T, C# _
- 6 T, d0 }+ I# S7 c7 u: V
- $qrcode = new QrReader('./test_logo.png'); //图片路径
( k) T6 Y; F* I1 Z- w
+ p' m& n: s/ `! N3 _- $text = $qrcode->text(); //返回识别后的文本7 n7 n( ]+ f; A* g1 x
- ' c% n. ^' V& ]" M9 Z
- echo $text;0 V4 h! D9 A4 \, p
- 9 c) q2 a' g5 A0 \% ]
. N) R2 J+ ~9 a
复制代码
. d$ R( e7 Y8 o* a: J+ c4 ?链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7% y. O$ @( S. e2 P0 Y
+ a G7 _. l8 P6 ]" }- W2 }. u
9 H% j ?( H& _3 @" H
) L* U' l% x- Q9 x& o. v3 m4 `2 n2 B1 z2 t& [3 l
+ f5 ]: v3 b+ A& [6 V: L$ R* G
9 O7 g* {0 p, E' D. D
8 s% L( _! T6 q6 w
7 Y; x9 Y& @6 W/ R U: Z* N) t
0 q, d$ q6 z: c4 n6 J+ j |
|