管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
, f4 a/ e5 U; [4 ?5 Z7 \4 x---------------------------------------------------------------------------------------------------
8 B8 [- ^$ d, E二维码的分类
9 v2 a: \0 n: _5 B4 ?线性堆叠式二维码
. W/ _- D' T3 s3 B) ^+ R
& o% S% [0 f& ~( `: x: I- Y4 ~矩阵式二维码
& M% E8 K2 ?6 e8 U9 K! F, {3 ?2 _) x8 L& l
二维码的优缺点
" Y+ [" D7 C% f( g优点
7 |: X1 P! S) c; m9 a; Q信息容量大7 X; v% t J0 j1 w1 _$ L
6 g# H, B8 l" @/ k( _编码范围广
& u. T1 J( B- }/ W) F9 [8 `8 U. D! T" H0 c9 [/ ~! G' e. D4 a
容错能力强" I$ _6 M/ Y1 |3 p$ N8 K
3 f! D3 f! K: m
译码可靠性高" w% K+ x( w% X' R& v1 ]0 {6 o- V
& H" C- l' n( D
可引入加密措施; Y1 i! }/ V: o2 l0 `! v3 C g6 ]
. K B! o1 M4 ~- ^成本低,易制作
& j' a* l5 ^9 Z" t: c) R/ A9 z+ M) P1 N- q. e/ @) S
缺点
+ d' a; u3 Y, k% s- J% I二维码技术成为手机病毒、钓鱼网站传播的新渠道" v- j' ]% z( d) ^8 r
: w( D/ ~' I* Y* N信息泄密
9 h! [" R# m7 C+ d* z! u) G, l: `
5 p }! k. V" o3 l; N$ s, G目前流行的三大国际标准* m1 S& r: g8 I& j
PDF417:不支持中文
. N# R) j) D Z8 f8 y+ U
* J, y' q6 `4 i7 N6 ~5 Q7 FDM:专利未公开,需支付专利费用
z- g: P! ]1 T: {0 o, i5 y& z Q! V3 I! t/ c
QR CODE:专利公开,支持中文6 w! d; K1 F$ m: u& \
. y3 L U' W9 E3 K1 P# Q
QR CODE 纠错能力1 \: O, L) t: b+ A+ H- G
L级:约可纠错7%的数据码字
( z& {8 [! w w2 M' T# v
* l" T( ?0 J8 h Y8 z' h! X; @, @8 WM级:约可纠错15%的数据码字: j6 \9 ]+ m- ?, R8 c9 O- Q+ q
$ \( K' X. u9 Z) o2 [7 f+ Q
Q级:约可纠错25%的数据码字
5 X+ v8 v% K. R
: V, |, x g F; g8 Q% N' EH级:约可纠错30%的数据码字+ S! ^0 w" x, e: F) u
+ n( \& O' J- }前提条件
0 h, K5 x5 O* v" W+ p- i q! Z. HGD库- H$ u% }6 ]: C( R1 \1 ^8 E" e
, D: F, D+ i# ^3 A3 J一、PHP生成QR CODE. V. B+ \' B9 W$ h" t6 i7 a
官网:http://phpqrcode.sourceforge.net/
, J) d7 u' G/ h/ d4 e$ c* A X/ b+ u$ @0 u" Y9 g- X- y; a
下载源码:https://github.com/endroid/qr-code, S* w. V# ^% O) h, N
1 p; q b3 F' D1 S+ a
目录结构
/ K; k2 F/ Y: x. c+ _' ^( Z' b9 v. F
7 q) K' m8 a" m5 o/ L/ K' M' g
6 {' h2 m+ j7 O7 _/ V2 E" V1、qrcode_create.php
: x. a$ @- o- j6 x0 ?ps:生成普通二维码" g( R5 E, r6 L2 \& D( u# D2 H1 R, O
% l& z' e- ?; @+ k1 A1 I( V- include_once "./qrcode/phpqrcode.php";/**: C5 x" C/ h* S% n' P3 c
) P. e8 L* M3 p1 @; {3 n" P- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
. ^; O3 `" g5 D- \6 x: C
" f8 U6 t% U- `4 X7 U. b- * 在浏览器上直接生成一个二维码(内容为abc)
" C# z% H6 N6 \/ L0 y
( P+ j" Q0 _5 M0 F7 v) W3 r8 r" w- */QRcode::png("abc");. E( j: n) w3 X+ |- m2 [& G
- 3 ~& o% M" c: z" p. x
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**2 N4 ~- A: ?6 p7 _# I5 q
- : a& o; t# y/ F/ a7 ?
- * 生成文件到本地
! n. {- d; {9 ?! v6 A
; J% }3 u& Z+ ]% h$ }( i% j9 I7 V- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)# E+ ]4 t4 r, ]: A# l1 s
/ N7 [2 V$ {: V1 e- I- * PS:$saveandprint源码的p6参数做了修改: a9 m; B* o# P! ] E+ W
- : I) F: o7 J8 O
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);9 F; c, J: ]% z* Q/ l' \; Y0 {
- - B! @' I7 f* L7 s
) o/ y+ j- d, Y+ j# ]
复制代码 ; Z4 U* m& P8 J/ j
2、qrcode_logo.php
; ]6 q% G, K& K f3 fps:生成带Logo的二维码- , q2 K, w% F# W$ a; _
- /**( K( {$ K8 a+ t0 b9 q
- ( j: H0 M, S. B' k
- * Created by PhpStorm./ ~0 `( K9 G! X5 ?% D, F* X
8 G3 }8 s; u! Z' l. T4 P- * User: user
0 ?4 \' M- C% Y L2 F; i! [ - * l4 p9 n( V7 B5 ~: u. O8 Y
- * Date: 2018/8/169 e" s6 s3 I: t2 c2 ?
- # d. B7 y2 Y8 R& R, a
- * Time: 10:432 H: |9 [3 Y6 w& b3 @
- # _( W* b+ y7 r) B2 H+ U9 O1 Y$ p) S
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";" \1 d7 B% M3 @% v
" E5 ~/ [- D2 u9 v) l- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称+ O l/ ?8 C/ j5 J% \
- 0 d4 `+ b) r8 c6 f0 Y$ U5 {; h
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
$ f' ?$ u8 s- f( V1 k" W( p - 1 g. o4 s6 |/ U9 ?8 s
- $margin = 2;//边距: `2 ^: A" H, S! @4 u$ f
- + c& y" T0 o+ f0 A; w, K
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
" i7 n+ c0 o# w' r' O5 `7 D - " Q5 S4 k( Z1 x- J
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
3 k0 {( {3 B5 e" }& |% w' C7 C
, t( K/ F# H( R' v! Y7 B- Q& q- $QR = $picPathAndName; //已经生成的原始二维码图# }1 r2 T0 m$ N4 w U8 Z' E' p {
- ) [! \) z! q8 `3 u
- $Logo = './pic/logo.png';
8 }5 t' g2 e2 ^; X4 ^
8 L k+ W5 l7 a- $Logo_re = './pic/test_logo.png'; ) h7 u# e( Y8 }. R$ m8 u, r" h
8 M. v6 V: P K8 o; b' ]5 N( I2 O- $QR = imagecreatefromstring(file_get_contents($QR));
. u3 ?1 h/ j& t6 ?0 {' U p
' T. O. h7 b4 N4 m% X- $Logo = imagecreatefromstring(file_get_contents($Logo));
' Q) m/ I, d6 X7 b9 Z6 n
! [4 L3 g4 K. M1 v3 `5 D0 j. J- $QR_width = imagesx($QR); //二维码图片宽度1 y3 ~; X5 z* g) R/ @
2 q4 A4 R0 h. d. q( X- $QR_height = imagesy($QR); //二维码图片高度
/ ? i5 {5 c6 [7 [- x+ d
' a5 Z$ S/ S. P& i- $logo_width = imagesx($Logo); //logo图片宽度4 X) V( o: i7 g$ N/ z/ c* A2 l% E; E
- . H0 n) L' d5 u( ~4 r5 w
- $logo_height = imagesy($Logo); //logo图片高度3 I2 {9 d4 |( k Z
9 q; ? o4 ~' C- U- $logo_qr_width = $QR_width / 5; ! _$ p q; b4 Q. I' P
: @# i+ l# j1 P' V' G% n# P5 }- $scale = $logo_width / $logo_qr_width;
% I& a1 X" Z; u/ g6 d+ T+ o7 K8 f - + G, J( u# g+ J4 z; s1 L+ L0 B
- $logo_qr_height = $logo_height / $scale;
! e1 C1 l3 z/ ]3 z- r2 k; E* r
7 z+ ?5 A$ p s! Y' U6 W3 n- $from_width = ($QR_width - $logo_qr_width) / 2;
( Q& B, I3 \) ]( [5 y3 d - . O* ]' N& {* m+ |+ g$ F
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
3 W L: S" V7 _1 _
F/ S# J/ J; D+ {: m- //输出图片( q, ^" R: \ n, R% n& K
3 C4 i4 |* ~2 ?$ J$ C, W- V. F- imagepng($QR, $Logo_re);; L1 j1 N2 k, D0 }. Y2 M
- - r/ G8 P; f" n) `7 q
- }
+ }, Y3 Y0 L5 y+ D% }0 T - + Q4 g: Y8 G, d
2 ?1 s6 [8 Q+ A3 ~
复制代码 3、qrcode_vcard.php (生成电子签名)
v0 ?6 |. d1 Y5 V& j6 I) h% g8 e L3 [
vCard格式:https://zh.wikipedia.org/wiki/VCard
) j( x% C# x5 p8 k: V- W
7 C' Q* @5 i* _; t
$ |& B+ i- g, s3 v% b) v- * Created by PhpStorm.' E$ q+ h, ]) t; m# N" E. p! J
^# |/ E' ?- R; i( ~- * User: user
# [1 b( y4 o; j8 ? - ( V% J; c* q3 x% O# p
- * Date: 2018/8/15
* Q+ \7 ^9 m" V4 Q# f
9 R( j( F( O. Y1 P3 v& c9 i- * Time: 23:00/ @9 @1 b" O9 X# p8 s' \- R' L* t
; ?; Q+ P) P, Q, e8 i( E& E- */require_once "./qrcode/phpqrcode.php";/**' r" Q9 q. T! N' D
5 {) I- g, ~4 W& f6 N1 _- * 生成电子签名: q$ |$ s8 d: ?- d9 x4 k
4 O3 m0 r% w3 x5 Z! D- * PS;使用微信扫描二维码
1 b; w1 ]9 D1 {$ `* j. H2 ^ - 1 V3 n0 p3 a# _1 _) Y4 B2 g/ d2 L
- */$content = 'BEGIN:VCARD' . "\n";//起始标志2 J' K1 J0 v3 p0 m7 @: d$ c
- 3 \" C& u" Q6 B1 z- X0 Y A
- $content .= 'VERSION:2.1' . "\n";//当前版本
1 O" O8 X" n J0 g0 w
# _$ x$ M6 I* s6 `* n- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名" S7 q8 Y' ~7 g4 x3 D+ L* B
L5 I1 J5 y2 e x' D/ ^. {, Q7 [- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称# B0 C) S( J( u' e
- & N3 K9 b, i$ C; l) f# w
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位$ _: A7 U" j6 W* F8 Y
- $ `. Z! M" s& B9 Q
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
. I& w6 K. W/ a4 b
+ q- j c4 c: X% R- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址$ A" z& s: r* y: @3 q: ]1 e- ` s
- 1 `, s6 p5 G* i5 \8 h; M. p( X
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)3 z, M' B7 d' T! N: G, W
5 d( h5 R r0 l6 @& }. N- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话9 k8 L$ L9 t8 C1 O; K6 ?
- : r( i ?1 ~8 [
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱5 w) H1 S6 Q! n/ |. g
, r5 e9 O% X, Q; `( t+ D" _4 [% _, e: g- $content .= 'URL:www.baidu.com' . "\n";//个人主页
$ Z) Z7 @! P j - 3 r: R) h" x- _, Q, {
- $content .= 'END:VCARD' . "\n";//结束标志
* p% T& h& |! ]* j
6 ~0 ~: p) \5 u* G6 m- QRcode::png($content);* B" t; u" _6 l: f( u- {
. s( o* S- p* j/ L9 U$ E" z$ a3 P- . N7 h( R; ? A. X6 G8 B
复制代码 2 j# C3 [# v8 S' J
相关文章推荐:
$ Q1 P+ w/ B2 Q1 W$ i1 P' R! e1.PHP生成微信二维码实例
4 t1 j* j, w3 C- C$ \5 u7 K2.php网址转换生成二维码
& ^2 X+ r( T7 w$ J) x' ^# z7 `3 r相关视频推荐:
! u+ y& I! w: t v/ M: y* `! `5 z* S/ v1.独孤九贱(4)_PHP视频教程
4 Z" A$ [# M6 e( K) u- r二、JQUERY生成QR CODE s# J/ j; P* Q) \" _2 s E
源码地址:https://github.com/jeromeetienne/jquery-qrcode
, _* B4 o# M5 x1 I; W( B& M, t, W" J- i3 Z& P7 y3 c! b
jquery_create.php) D6 |7 j' h# i* l4 D) |! w
6 g0 D7 v. P; X$ r6 I; s* V- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
! c+ D; o0 ~* z三、PHP识别二维码" j7 O! ]1 C6 j$ A
1、方法一. R4 a5 z* S: b
环境需求,安装如下扩展
# j$ f8 ^4 F& d% E7 W- ImageMagick4 T! m& p( {0 E/ i/ g
- zbar
$ d. S- t6 z7 b2 f2 j$ y8 [: j- php-zbarcode
, T+ N5 ], p) j l% A3 [) f5 i% m/ ]
1 Y$ s3 U, l# F( G2、方法二1 P7 I9 }6 W' p
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
/ }+ T/ J' L( e7 Z4 r# OqrReader类:https://github.com/baagee/php_QrReader. s1 b& O9 [8 B# M3 k& @- U
2 P' n& \6 s n% [
- 9 x& i0 x. h8 n: }, r( W, H
- $qrcode = new QrReader('./test_logo.png'); //图片路径
- e' b9 N, T% \: @
( x( F: @, d! `$ c7 Z1 a$ d( E- $text = $qrcode->text(); //返回识别后的文本: S9 h% x" ?' t# d( |( h/ c" x
- 0 z! n4 [- k# F' J
- echo $text;
. a" f9 [% B) K2 U6 t' p
! F& v) ]3 C+ o' d- . `1 l. \7 b5 v4 Y; I: L" L
复制代码 2 y0 @. v) C, x7 ]2 D. t
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7* Q9 I$ w! j2 A9 u0 p( I, R# I
3 t% P' a- `' Q7 }& s# A H& b5 s6 }) Y k( p3 [
; q+ N9 o! _' E, n: U, P; s+ r i, t. f% y: H6 u( J
( f: m* W3 @2 M- b( X# }# E, W d! C
% c; v' D7 K. b' \* L7 h$ Q; `( T2 S) H2 R* I
$ H' ^) K: ^- P# i5 ?, L& Y+ M! g: Q
|
|