管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
5 a( c& d+ w( g" j B; M---------------------------------------------------------------------------------------------------0 X+ e* j2 }9 F" }# `
二维码的分类/ k. l5 s/ y' g$ H
线性堆叠式二维码. c- X2 @; K& L
; I8 T% G! H9 W6 b/ i$ ]$ r
矩阵式二维码
7 V0 O0 h+ P3 U* R/ t- U u
) X) G& [- m) D! |二维码的优缺点
" o) U" t9 o7 r优点
+ _8 T% K6 w, i3 S/ }1 M" f信息容量大
) S( O# o% h7 W2 [/ c
6 U1 K' \$ k% H- H编码范围广+ _/ n" E. Y$ P. D+ [6 z% L. ?! o
8 d! U0 ], A6 a6 y+ m
容错能力强3 s$ `* M [ V$ q
7 W1 {" G1 R/ C t, c% o
译码可靠性高( S5 g$ c2 Z5 X; M' n$ x8 G8 M
5 P" h* \+ N0 L% A, `
可引入加密措施
0 [+ O1 d2 m( \/ U
' f1 g, @. `. n成本低,易制作
. z. x& w9 F9 Z0 d4 v. p7 k e% @5 G% O
缺点
' F. M' F/ l0 t# A0 s! m二维码技术成为手机病毒、钓鱼网站传播的新渠道
) n. |0 {, x! v+ s
* [8 D, Y' C& M* p信息泄密
5 \. A$ u' F3 X3 y. e! `9 F8 D7 E; K6 r, w D
目前流行的三大国际标准3 X% M: j6 ?: |5 f3 y* b
PDF417:不支持中文
' Q) \+ a/ ~5 b& N" u! i4 {: ^! I- G/ {
DM:专利未公开,需支付专利费用
7 p( K, G+ M* P$ [, r
! i2 I2 y" w2 V" i- y/ IQR CODE:专利公开,支持中文. O/ K$ ?3 n/ r5 c7 X3 ?, M
( p1 Y, X5 v; A: @
QR CODE 纠错能力3 Z' U- J9 @ c' U; O R2 l5 A
L级:约可纠错7%的数据码字+ a: [. V$ i( f$ c2 c
n, h( g: t# P" p+ g4 B- t6 x9 Y" u- k: }M级:约可纠错15%的数据码字
\9 n# v: g% l3 _' ]& B7 S" b
0 |" g" h' m8 ?5 s, o7 H" i. OQ级:约可纠错25%的数据码字
C/ J7 A5 p" @" \4 b* A7 D+ _$ \" R4 O& u
H级:约可纠错30%的数据码字4 d; U( o+ u: c
$ O: x( O; L" e# d2 R" [5 _" D. k前提条件6 N* B) t5 X+ E
GD库
5 ^0 L0 u) d$ S1 k; w5 |, l' `' n7 v6 p! @7 }9 i9 T
一、PHP生成QR CODE
+ B( n6 ?* t! p0 p官网:http://phpqrcode.sourceforge.net/% H0 N" `, W5 A0 p! p
O' k- \/ z9 v5 {; ^* V下载源码:https://github.com/endroid/qr-code% G$ m8 N4 g" a( g
* Y, z: x& k" w" |1 ?- E目录结构% [) g( `+ G5 w7 q& ]5 ?4 n
' N0 X$ p& y3 I- g D5 A5 L- {2 O V
9 D* v- P5 S, ^: W2 D
1、qrcode_create.php$ {. Z; u# @7 o7 ?: H
ps:生成普通二维码% o1 u! h6 p) ^
* e4 C: S" _* c- s8 X9 b( h$ |. x% \- include_once "./qrcode/phpqrcode.php";/**
; n' i( o# c( s0 }$ ]# Z - # d, |" @9 \& E
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径. P' u: g2 d/ Q% E; |% J9 s/ x- c
- 9 T1 u0 c. G7 G+ |0 ]- m
- * 在浏览器上直接生成一个二维码(内容为abc)
, W; p0 X. e, Z( Z5 Y
4 @$ q! O1 g: a* z h$ Y- */QRcode::png("abc");
- n+ k' @% o! ]" O - ! B9 ]+ E7 L( a j' @
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
, I# |3 P: ?* z+ F2 [/ c/ y" P - 7 u* |3 C4 P+ d
- * 生成文件到本地, z5 h$ I1 a; H& `* n4 z
7 E9 o+ z7 h6 u! c- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
" g+ D! y b1 m5 F: e
5 q% J+ _% Y8 R1 g2 [- * PS:$saveandprint源码的p6参数做了修改
( N$ N8 m# W8 I/ O9 w O8 o' ] - " [& L5 x& H" m! f5 W2 g |
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);9 c, x: A7 Z$ l" V
3 Y' W$ X8 a$ t6 `: N- 9 U3 E) `; S: J, b& t
复制代码
0 z0 p8 s; g) j4 @' J2、qrcode_logo.php8 ~5 z9 g% C7 J
ps:生成带Logo的二维码- - D0 Q+ j. ?- X: q$ }
- /**
' n' |1 w3 u( X: |. x! D4 ]+ S
1 H$ I1 R! w8 [# m1 W$ R. n" l- * Created by PhpStorm.
* z7 @0 E9 t* t - . m1 R, G8 z `* r* |
- * User: user( T. u9 J7 S N; D, U
]! K) Y9 X) u$ {- * Date: 2018/8/16
/ e8 c" p% t! n6 y/ w/ W: u - 0 f5 V$ f/ F+ ^5 `- s8 U! u- U
- * Time: 10:43* S$ l3 x" @! \$ c( a4 L2 O1 c; A
- 2 v8 j6 x- @9 G2 j1 B6 V
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";4 u& L# ?; e0 t4 A9 k
- & t; Y% G/ J; j8 G
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
, h& m/ n4 L5 U ^2 N - - g) H( W: f2 z" u+ H6 H, f3 M, w
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
6 g$ `3 G( G4 g+ D* a5 w' {
* p2 ~$ G. |3 G! ~$ A+ t$ D6 \- $margin = 2;//边距' ^8 t; M8 F: r: ?
2 Z7 f, U7 \* ~- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
2 h& e2 l# |1 Q) F
& Q7 [! m8 r! k4 F# O- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ 9 l2 G' Q6 G% R
5 t& u# T+ J0 r p6 d k- $QR = $picPathAndName; //已经生成的原始二维码图4 D0 w% e3 T% g4 L
- 3 V3 O, B# c" \) @) ?# S
- $Logo = './pic/logo.png';
# o' T* c1 \) x% u/ Q, V# }
( l3 i) i4 Z; t7 s' e: r: y2 z6 c; r- $Logo_re = './pic/test_logo.png';
! V! C; O! z6 S$ N' C6 Y
$ Q$ J- E2 D& I! }* i- $QR = imagecreatefromstring(file_get_contents($QR)); 4 r ~- U: M" y
- # h. h% K3 n$ Q3 `
- $Logo = imagecreatefromstring(file_get_contents($Logo)); - ?/ e% y l: B0 R/ S4 O
- % [9 c5 E6 S9 t
- $QR_width = imagesx($QR); //二维码图片宽度3 C7 c: z6 m5 u& a, D0 m
- $ [8 |+ N/ x0 u; A
- $QR_height = imagesy($QR); //二维码图片高度
0 O* D% T, J+ j0 R - k- P4 g: f( o$ q
- $logo_width = imagesx($Logo); //logo图片宽度5 n4 d! \6 g" O: t$ }- h
2 U- {0 ~7 n g; U* n/ X- ~- $logo_height = imagesy($Logo); //logo图片高度
2 r6 m# @8 l5 k$ ]5 K - - N$ @$ d f. r c9 p9 y
- $logo_qr_width = $QR_width / 5;
+ B+ K$ A! o, P z9 {: r1 L" [1 Q
, X" s7 X: v* x- e* z; H# k5 t- $scale = $logo_width / $logo_qr_width;
7 J1 C9 c% @" I2 M/ s - 7 g4 ~; H5 t- Y1 T+ S
- $logo_qr_height = $logo_height / $scale; 3 ?$ I' p1 l) B" Q+ i
- 2 n( z' x7 T; A. Y, G9 R7 V
- $from_width = ($QR_width - $logo_qr_width) / 2;
, I, F) }0 O1 O; Z
! e! b9 v0 @) {8 Y1 d- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
4 S2 O! B. \0 v. x - # p2 Y, V" M& g& F+ Z
- //输出图片2 T" }+ r1 @: I7 i
- ; {& g5 h# f! e( Y6 {
- imagepng($QR, $Logo_re);
9 A: u. }/ G6 H$ ]/ P' {& s5 \ - # ]" p4 ]- X6 |) M4 @/ N0 a
- }6 B" ` ~: {8 Q& T% E
+ O1 b" O: R8 V# M- 3 s+ m( u- B5 J6 |: U+ g
复制代码 3、qrcode_vcard.php (生成电子签名)
/ n, N1 e$ ]# v% @, F% ?- T1 I& \/ C4 W S8 K: x
vCard格式:https://zh.wikipedia.org/wiki/VCard. a4 w5 v/ V; O
7 x" n0 B* |' G% u- G7 B2 ^4 Y
- ( H* b+ h( A: x& b, L" t
- * Created by PhpStorm.
) r8 K8 Z4 }3 p0 D6 p, h
" s$ _% f1 u( `5 a( ?) s2 T- * User: user* o! S# v! j) y' j
- : ~1 t5 x7 ?# M. k# Z: N3 R
- * Date: 2018/8/15. G0 q2 G- I. T. U* l5 b
- - {5 g5 ?; b) h5 k/ [3 T1 d7 l( u
- * Time: 23:00
/ k% k1 q& H1 y) H. N9 e" F - ! X9 M6 O C+ z U' N! H: w
- */require_once "./qrcode/phpqrcode.php";/**
, m. {+ `7 H( K, L4 P
4 z. c+ E7 n8 h3 |- * 生成电子签名
( Z! p) ?* ^, v; X4 h% J; [ - 2 ]' P! h8 \: x2 E* z# h$ B/ z
- * PS;使用微信扫描二维码# ?3 b& L" t# r' h* X/ b9 g1 ^! g
- , U% V/ {2 ?8 S0 D4 w! [
- */$content = 'BEGIN:VCARD' . "\n";//起始标志$ |2 r9 h/ l3 {# s0 ?
7 _' j& M/ A7 y7 j; G f- $content .= 'VERSION:2.1' . "\n";//当前版本- R4 Y% y! i7 i& c7 n+ v# j
* c; [# N; q9 q7 t% m1 V& R; ?- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
0 X8 y. ^6 ?% T+ y3 c* l; L' r6 E - |3 U) b4 ^1 J F
- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
7 J4 r3 `" K6 S+ |8 R - " ^, S ?2 q. L; F9 z5 M
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位( U* R( c$ d7 S5 ^. y5 o/ Q/ {
3 T! E. r$ e9 l. k- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话2 K- s/ Y. \6 m G$ O. _# `
) S! y- n2 i. C5 B# L, k- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
$ E8 c) h; k- t# ]* U
0 c2 a: F" t2 S3 Z/ U# L. u- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
6 M; {# i+ }; i: ~; o2 [$ d& Q - % U9 a7 z/ z: {. V# j! b# h
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话% Y. H5 {8 O& J4 v
2 h# J! W( b, e6 e) ?- F5 ?- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
/ Y2 \9 j) ^9 @/ A% z+ f2 v' z - - U7 D" ]" r0 J5 P' U" t# s
- $content .= 'URL:www.baidu.com' . "\n";//个人主页
7 |! R0 z1 e. I1 q: e - 1 D2 f$ a$ }, D1 U& E2 Q0 C# ?
- $content .= 'END:VCARD' . "\n";//结束标志
8 ^( k; \ i7 m) Y
; U, m: P6 O3 E9 h- QRcode::png($content);% x/ b' U! v) e2 `3 R" ^3 B
- 9 e4 w8 G5 g) y
! k/ \& T; f9 [9 y5 {, X
复制代码
1 y7 K/ r0 p* x. H相关文章推荐:
# Z6 N9 S' v! T9 Q6 d+ ^1.PHP生成微信二维码实例
) ~7 [2 _4 Y" W+ U2.php网址转换生成二维码
# X) N, Q9 [6 F" ]5 {相关视频推荐:; `9 y( k% C1 S( s! Z& P
1.独孤九贱(4)_PHP视频教程 [' r4 P' s9 @/ A4 f' n* e0 W# H
二、JQUERY生成QR CODE" T9 A" X G* k$ P7 {2 h* j$ M
源码地址:https://github.com/jeromeetienne/jquery-qrcode
' v- {! S. K& m* }4 c+ n* p7 B3 k% _" _9 b: l j
jquery_create.php
# }7 _0 S: C, `/ w5 j7 J. j+ f! U' z% U1 H% C3 l( @# P
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 5 q& J3 M+ Z6 |5 M5 l; M+ Q; \
三、PHP识别二维码) W* Q% s& R7 B
1、方法一
- Q; B0 k2 O" n8 q0 S环境需求,安装如下扩展5 I+ a- s# K9 }( ?, a' W8 t
- ImageMagick
8 _8 B# B; `0 ]* U {- zbar3 }; n! w4 C p N O* t
- php-zbarcode9 \8 H. ^9 j- e7 W) G6 }
, n, ` D( J7 K, ^/ \* m
2、方法二
1 S. d% O. H' j; D5 f% FPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
( w# i/ _# g: I# P/ L2 BqrReader类:https://github.com/baagee/php_QrReader; f8 }; h! O0 k% v' r
! d, j p+ K% \& U2 c' f
- 6 v" Y p% q4 M1 ~4 |% N
- $qrcode = new QrReader('./test_logo.png'); //图片路径
& _" _ |4 L& W* T4 k1 w' M2 d/ O1 o - : Y g; B& `) |% i8 s
- $text = $qrcode->text(); //返回识别后的文本
4 t+ g9 o9 q4 J f' V
2 u5 B# M, m5 G/ a$ N+ p5 j& i- echo $text;
' ?) m' s' r$ W
l! b3 w$ {/ P/ p q- 6 ~( `5 I* ~8 W4 A' B" [
复制代码 ; d# O, e# J, i4 @8 ^: V- ~! ~
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y70 e$ F A# f. q' R
5 {1 }2 r1 w @( n. B# b) U2 T" f; k( s: E7 F2 w
4 O' a$ U& Q n* i
" ]4 o6 y5 C) ^9 l7 }; k
3 ?+ U' y- v6 u/ @
8 D I! Z" ?/ e8 V: {; E- Y" n* N4 f: c0 d! l1 p
- [% z' ?& i/ b# E
. t; }0 ^9 ? @ |
|