管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
+ G; _, U& O4 K" J# w; G---------------------------------------------------------------------------------------------------7 s$ S# e+ a/ D2 A
二维码的分类
- T6 D( Y" ]$ u$ m: A5 r) M( A线性堆叠式二维码
4 \* p2 P% I7 L+ X# e8 c- ~# R$ @0 @7 n V5 [
矩阵式二维码% E' b# O/ b7 y4 f* Y
1 a6 P5 ?" g% T- j3 H, O二维码的优缺点
2 |$ @/ Q' [/ C( H* k优点1 ?* C, k# F9 g8 t8 T; ~" ~7 z
信息容量大
. E' K3 [# q; | E
$ v0 H+ S! Y$ m3 e编码范围广) w, z L, u; k3 z# f! B: W1 g6 x
- r3 S* j% a d6 _% @& X容错能力强
" m* |8 h" p- {+ U, N- i2 K
# x0 Z9 r9 W! I1 A& N译码可靠性高
' h3 b C" G" t2 l f* c8 |0 g! c4 j3 H' J2 g1 H2 m# S) g O6 e
可引入加密措施
) S- h0 q% ~: T- [5 J
- w9 n# I$ i! o$ `" I成本低,易制作
) w" Z, J5 }% u( v& Q- E" w$ n1 J9 o
缺点2 V# R/ i& C0 O
二维码技术成为手机病毒、钓鱼网站传播的新渠道
5 |' s4 \- o6 v& W7 h8 W/ }3 J/ h4 o1 n: _& D
信息泄密
% |* } K6 B- [; W7 E& i1 L1 G1 Q2 }
目前流行的三大国际标准' r9 J, ^. z* }& n% v
PDF417:不支持中文
, r5 W, c# C; d5 S/ J* N% _( M j
DM:专利未公开,需支付专利费用
6 V1 H: [2 q1 n% C1 M# s- |) N* W" Z5 i' d7 b+ |4 C8 T1 s: T
QR CODE:专利公开,支持中文
$ G; t) m0 P% w9 g3 K9 e O
1 g) ~ P5 k# v- U( XQR CODE 纠错能力
, @6 w' F3 N+ nL级:约可纠错7%的数据码字
( Q4 L) c; r0 a- `0 }7 n. }5 ]! f4 b/ ~+ |( s+ E% r; s8 X
M级:约可纠错15%的数据码字3 `; k& V) p* m$ m4 V" r6 A( d
2 `3 }% a* ]3 s( \Q级:约可纠错25%的数据码字. O8 W; J# U5 D' ?( c& z; K
8 W- |6 i3 ^% h+ w$ P" Y! [3 ~9 {H级:约可纠错30%的数据码字, K* |+ s8 \9 ]7 x% r
/ F, Y& j% X+ B+ ~
前提条件
4 J3 w0 C1 i9 p2 o- B) d7 A8 ZGD库
- y" D& Z' K, G! E" G( ^8 p0 K$ L7 {5 w
一、PHP生成QR CODE
Q$ y5 \4 `/ I$ c" G官网:http://phpqrcode.sourceforge.net/
2 n u/ t9 F. ~3 t* C% v+ e3 e$ V& b. y; d1 _" t
下载源码:https://github.com/endroid/qr-code* r: I' m7 {# P3 J; n
0 q u1 A; P$ K: W+ K5 U目录结构
* R) H* G5 g2 X i0 S6 |
# ^2 n9 t8 e' }0 G. k9 f
3 \( {. g, O) d( p9 d1、qrcode_create.php
9 e+ @1 |- G, F8 h! J2 o1 vps:生成普通二维码6 A! h. N6 r4 I: }: D0 a
- * C7 R2 }3 q% A q; r
- include_once "./qrcode/phpqrcode.php";/**
! e5 w5 c- ~" y+ m+ i4 X2 E/ P - 5 U. [1 {/ u: p7 r2 U. N/ G
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径% H" {; y" o5 R: _6 j! {4 f4 O4 `
- u% U' @3 P7 R/ K
- * 在浏览器上直接生成一个二维码(内容为abc)
3 |3 T$ n) n, R
& J8 B7 z* P I1 Q3 d- {* e- */QRcode::png("abc");
' [4 {( \8 U: Z# k' _3 j# ] - + W* \* l7 ^# s4 W. j
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
/ _- P/ }6 Y8 m8 P
+ Z @8 s( H" `( S$ S6 _- * 生成文件到本地
/ c2 M" d8 T- ^& P4 F
* Z# A- D m' ^6 c+ V- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
4 N, w- y, H# b" ~
, U% z8 e8 v- ~6 Y! s2 r- * PS:$saveandprint源码的p6参数做了修改; F/ M0 y7 Z# n9 h' x8 T5 w
- 3 l% f3 }2 j( R6 H! g" R
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);4 A: j( G: b, t7 c
& r6 p( n, l* @0 m5 z3 e
4 s; [$ n1 G% Z! g! t; C+ H/ \. v
复制代码
+ b# k: ^8 j( h" R' L! \2、qrcode_logo.php
2 E+ i) O0 Y& J1 u- h; E+ f7 Kps:生成带Logo的二维码
7 M5 E f4 k* s+ h7 I- /**
, u, Z0 X+ \1 H% K3 h. l2 X/ r - 3 t0 M4 v6 ^8 a# ?
- * Created by PhpStorm.
5 o! m& {$ f/ j8 l% W - 0 Z9 K/ z3 v* S# Q
- * User: user
1 o2 I* `, u' h+ E" Z
( C# x, s# F: b( K* G- * Date: 2018/8/16! k/ O2 g' J: P* m8 Z" u( |9 ], _
, X. \$ H! \8 b( I' E5 f5 E- * Time: 10:43
+ f/ @; j4 `3 s; s+ D1 o; J0 ]0 u - : O. Y- |( B v0 ~" d# e' ^1 J
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";, s% k9 w2 L% ?" |; l, V6 }
2 M. s; I6 G9 W+ T2 b" v# ]- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
1 \$ _( e8 @# @/ \3 R) Z. c - 7 B' j& f3 e/ } I t2 e
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
* q1 z# x9 W5 n8 {
9 ~. _' G6 @8 j" x- $margin = 2;//边距
( Z7 i, ?( w" @1 L8 ^, G. [ - : a4 L/ v$ X x! f( L/ Z
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
" o7 b& O) a8 u7 ^; ^0 U - $ D) v9 n; S7 A5 b% O) U
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ 0 B/ E* X; S8 y0 z# X" ~
5 r0 d) H3 [. I; V+ b) ~- $QR = $picPathAndName; //已经生成的原始二维码图0 `4 G2 s* v+ p( g
: w/ H; O# K% P: l- $Logo = './pic/logo.png';
* \) t" I3 c/ @/ R* a - + i! ~ n: ~) i: r3 Q; p6 @" E
- $Logo_re = './pic/test_logo.png';
& Z* K2 K$ m9 H3 Z R - & N. o5 d5 `4 o4 A; G1 ~
- $QR = imagecreatefromstring(file_get_contents($QR)); 8 D9 h4 ^# U5 ]6 X/ K& h( d6 K
- n6 G R3 N4 A5 _% Z
- $Logo = imagecreatefromstring(file_get_contents($Logo));
4 {, h! u: P l0 f1 S( i- f - 1 S9 n: u x: _; t
- $QR_width = imagesx($QR); //二维码图片宽度7 d& X3 u: y* F2 B0 b0 `
( ^ h e$ r! z- j: N) R b; u1 G- $QR_height = imagesy($QR); //二维码图片高度
: l8 F K0 T+ N X
# e% q/ Z) m Q' x' a- $logo_width = imagesx($Logo); //logo图片宽度' r# A0 s9 T9 ]! w) b
- # E* _8 S6 q* ~' h. U
- $logo_height = imagesy($Logo); //logo图片高度
' q f0 @& n# J/ y# t$ @
1 [6 r2 ?- |; D* M, I; ^4 _, K- $logo_qr_width = $QR_width / 5; & `! K) d/ S' }' j( M
- Y1 M1 X$ Y0 u7 J* P0 K- $scale = $logo_width / $logo_qr_width; # b' U( I5 ]1 G f" m
- @$ Y8 U( F2 S
- $logo_qr_height = $logo_height / $scale; P' _- v& e! F' h5 W
{) K$ L9 _3 R5 _' ^1 c, g- $from_width = ($QR_width - $logo_qr_width) / 2;
4 Z2 ^- W' M/ L4 R" N7 A( ~, s - % U% b" r9 o( p" ^* l% T' a' Q2 F
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
2 D2 E( V, m' W3 s; @# I" ~ - " y7 v" X5 j: r9 q+ R* f
- //输出图片/ z: Z: `# y( g7 @. R6 T- X
5 I" `8 V; G$ w( m/ |# J- imagepng($QR, $Logo_re);9 ~$ B9 ]% @. U h; {
9 T; ~" g: k. o2 ]7 N2 g- }; @- [: ?+ k. U9 E
5 O' G) a6 T% M0 J, @7 X! H9 o) l- 5 o4 X. {+ g, x) t
复制代码 3、qrcode_vcard.php (生成电子签名)/ k+ f9 _" l9 }4 W- j
& A E! o+ I, I6 K6 Q% J/ h& w
vCard格式:https://zh.wikipedia.org/wiki/VCard
5 r6 m( M# x8 S% i; J- B
# Z( W( N/ N/ A' G- Z$ v
) N i0 y) V. t- * Created by PhpStorm.
' R4 _0 A' h$ K: l# t - " V. ^, F$ _. z$ q
- * User: user
& o* e; {; J8 S6 a N% T - . l/ }, I7 W5 W! |) J3 [
- * Date: 2018/8/151 ?2 x5 w9 Q, A' A% h% n3 V
- 7 {9 m {2 s1 p( ]1 c5 ^6 E
- * Time: 23:00
- a, q9 y$ W$ F" d8 ^
+ Q' r0 i3 j' V- a0 _1 f- */require_once "./qrcode/phpqrcode.php";/**
F- @: l" Z5 y# V
% V9 F& |) n, F6 V6 n0 x: S$ F( ]- * 生成电子签名
# I6 _& U/ b1 r
; `0 s/ H' J2 ^, x! x- * PS;使用微信扫描二维码
- v7 g, p2 N! @2 ^ z - ; r2 E( i! X1 R
- */$content = 'BEGIN:VCARD' . "\n";//起始标志6 j: o. \; T. V( \
: h! S# |% {; I7 y) H& |- $content .= 'VERSION:2.1' . "\n";//当前版本$ W! i6 q% b' s* F
- 5 B( x/ H8 k+ r3 _/ o" h2 w& f# ~4 N
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
8 p6 [7 X/ ?! z- O5 I, ?( }& E
4 r9 V7 K6 [* P% G. _' x- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称! {) S$ n8 O$ K2 ?
- ! o+ @4 l( b2 U/ `/ _6 U
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位: y8 v* X) L7 t: j
) g: J/ q+ C5 l3 a" t- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话- | m" C- ~& i/ m$ Y7 B% x$ K
4 g) J1 ^. m/ z3 [! Y) R* x d- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
' T8 v+ r% b# @' C' m9 D - " h5 v+ `/ l3 t" Q0 x" ~1 b
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家). T9 I( I2 z. h+ U
7 f$ Y8 S' S( S: {" m* S& U- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话3 H1 p8 W6 |, E/ Q9 g
7 @0 O1 z, H @9 N8 H4 b" s! A- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱8 s% r& W" @& r( @/ c) {
- # T. O7 u2 Q- Q0 r; n: N; @5 t) t
- $content .= 'URL:www.baidu.com' . "\n";//个人主页
y* M8 m; F) p# W
+ T' b/ ?8 F+ p" X! @6 W5 H- $content .= 'END:VCARD' . "\n";//结束标志 J1 @! y0 {( ~: b6 y2 B$ I
- ; b" s( C3 T Q
- QRcode::png($content);3 V6 x! g! i) C5 S" T! S
: t$ i. Z2 J3 g1 |+ x* _- 6 e( E% q2 \! y/ ]/ g: \
复制代码 8 Z' c! F4 t) Y- M. X0 K
相关文章推荐:
2 s( B3 t" O0 [; I" x& r1.PHP生成微信二维码实例
) f! l+ @" a& h# K/ \& l9 j8 J) j1 [( r2.php网址转换生成二维码+ ^# c! y4 { q" k8 g1 H
相关视频推荐:0 Z% a: h/ w& W! m2 _: b
1.独孤九贱(4)_PHP视频教程* @7 Z8 ]5 L9 N
二、JQUERY生成QR CODE/ w: P# h' F- K3 ~1 k6 P
源码地址:https://github.com/jeromeetienne/jquery-qrcode4 u& M; H# S2 i0 G! G: l
: w r! I3 V q9 J/ @% V
jquery_create.php
9 A) |# O" M/ h- J5 d. t1 s) ?- f. M5 I0 ~' k( R3 Z* e
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
- S% V( h. v0 I5 G5 B三、PHP识别二维码+ L8 j' {1 `' U9 B, E3 g' Y
1、方法一6 N8 Q* G4 H0 Y$ l
环境需求,安装如下扩展
0 r |+ _; x$ G0 C L: W! o8 k3 T- G- ImageMagick
% p/ T' W6 v+ N" l' M- zbar: K6 D5 [6 }8 `' J- \
- php-zbarcode! ]: }; T5 X2 C
7 i- C5 g- n3 s; i/ E) _) @, G2 K2、方法二
' e- q6 T i9 c( c; O! l+ `8 q7 ?PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以% A7 ] ~2 K4 Q5 I8 I) v
qrReader类:https://github.com/baagee/php_QrReader5 K( C% s8 P6 l# \' `6 U7 }
; J3 v! x8 B; i% I9 Z7 @- 9 l: ^( x/ ~# u
- $qrcode = new QrReader('./test_logo.png'); //图片路径
% M F! v. e% Y1 u$ Z
. R. O5 _2 }, X3 D- $text = $qrcode->text(); //返回识别后的文本
8 L; G- F: T. E, A! Z9 f - % N3 T+ }' Z# S2 [9 t. ^
- echo $text;
$ B+ ]0 v5 v$ x- O2 ]9 c
+ J+ i7 N( f2 j- V l& n
/ i. y5 ^ J! Y1 p. `
复制代码 0 H2 F0 E0 N2 L$ D# H
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7) M; L% C2 `. b% |+ b$ b( O
' P9 L( S: ? D! v. V
( Q: i/ A1 E1 u7 R! y" l7 L( K
; k3 k7 p# f Q
. s. N/ ]4 ?0 S3 k" @8 r; n+ W3 f, |+ V
$ a6 Q! ]+ w9 q; u% I+ k
' n3 V1 v3 C/ i1 U/ h8 v/ V- K
a7 ]7 J- v, Q
y9 w0 Q% F! K |
|