管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 e* F7 Y ?& G- F6 v
---------------------------------------------------------------------------------------------------
! x9 |. d9 w$ S1 u- n5 S8 Q二维码的分类( N s( j, s0 S: }9 X$ J
线性堆叠式二维码2 ]* }' P k6 R' U o
! F; o; c: x- v. x& N
矩阵式二维码1 _( ~: M7 B3 u. e7 U; n
( ~0 a* U: [& U* I6 L% J' Z二维码的优缺点
; g3 H3 S. C& B优点
. K- t/ o# q. p信息容量大
% Y- e1 q% f' @7 }
& J, l3 V5 I9 F" \编码范围广( f7 n9 v6 P6 u& I3 L7 T0 I
5 Q& I3 f& {4 Q/ t0 h$ ]
容错能力强
3 M+ k, b- {5 m$ ?- {2 @' G5 K1 [7 V
译码可靠性高. o( N+ U c. S- b5 e2 R
6 }1 L2 r9 U5 d+ _4 i, D. @可引入加密措施
" a7 S6 b) e% y0 i2 b! N3 h6 m
/ \- F% ]1 l$ F1 n' X; h/ @- v成本低,易制作
# e5 y7 U4 f; D0 @4 v' K
- b# y+ q' L6 O4 i缺点
3 i0 ?. S* y( a- X( u二维码技术成为手机病毒、钓鱼网站传播的新渠道2 `! P% Z, \( H
% o5 n/ u1 F7 p3 z信息泄密 U: n+ e% {' d# x/ T% U& o
! |; Z N7 ?; W目前流行的三大国际标准. H2 Q! w( o. \8 ]3 U$ B5 S
PDF417:不支持中文% Q7 S6 p; a! j* R: L
( R( ^# f t; z9 E; l. O
DM:专利未公开,需支付专利费用
1 [- } u5 ^( |! L- S: E# D X1 f$ L& k, V0 k; m& H
QR CODE:专利公开,支持中文% S4 b" W, L- j
3 t5 t) O6 H) cQR CODE 纠错能力
7 X2 s A( m8 s7 m2 s: e7 mL级:约可纠错7%的数据码字7 r: p; i! H X. h% w
7 V; T) S' |/ a N6 X5 ^
M级:约可纠错15%的数据码字
+ D, b. }0 J8 X) f0 Z& B7 Y8 B5 r8 X$ C1 B
Q级:约可纠错25%的数据码字" c3 _) f: ?; a. W# F
! l0 m! g7 Q5 JH级:约可纠错30%的数据码字2 ?9 H5 h; j* Y9 t
6 _( ^4 r: A3 u. `: ~% G/ W3 w+ r前提条件
( v1 M0 |& S' [' p! K$ DGD库; X! c }% b; I' e, P
8 s7 Y; i' q9 x v( n# E
一、PHP生成QR CODE% V6 A0 U0 ]) B9 t% g
官网:http://phpqrcode.sourceforge.net/- n7 o9 a. K' q6 J
$ Q$ u3 O2 k! P& ^ U/ F# F2 ?下载源码:https://github.com/endroid/qr-code- B- V2 M: o2 x1 R
. f' o- a9 X7 K' ~2 |0 K
目录结构
; `& N! I; @ R! `3 @/ X
6 i0 y% M: z2 m7 g1 [5 K& D/ j. @. U
- c+ w9 P( p, I* F S
1、qrcode_create.php
' w5 A0 Z* B2 \" }4 ]ps:生成普通二维码
/ M, U& y; U6 `
/ {$ g8 n" Z1 Q; }- include_once "./qrcode/phpqrcode.php";/**. z2 c( @2 K; d# P
- ) w' s, L) w9 D2 r$ ^6 W! \4 | w
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径 M. L* C4 k& T3 _3 m& G
+ K6 b3 ]- v0 W( I$ u- * 在浏览器上直接生成一个二维码(内容为abc)
4 w" H& N+ e! o
# y7 N' N! ?+ T( ~" v- */QRcode::png("abc");
3 k, ~3 V$ X& M' _% ~4 [% @% V
+ e: H# Z$ v6 I. T1 i; s+ b- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**, v4 S$ t; ?4 D# Z
- 8 s1 o- B( o3 R
- * 生成文件到本地
- s3 n2 `" q9 u" d R, U' m
. ]2 Y1 m' X3 R7 t8 V1 ~3 \2 x* I- z- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
* R1 [' N: H& Q" ? - " h, Q8 G, Y6 P# ^" f. K! l
- * PS:$saveandprint源码的p6参数做了修改
% a; S: \: d! d7 y2 ?1 V
( d3 `8 ~1 N; Z8 d- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
- A5 E+ X1 c, i0 L8 ]' ^5 g0 l9 |
) o2 U. g, H0 V0 b- Y; }
* l7 n2 ~1 p( h) P
复制代码
% z8 ~2 U$ F7 N- {2、qrcode_logo.php
% I7 i" H0 \+ ?0 ~ M9 eps:生成带Logo的二维码
+ V" ~- Y4 E, u- /**) P* H( j% g* S/ D5 i* s
- + ~1 Y+ v9 [1 w5 T
- * Created by PhpStorm.
; t! {! s& j, \$ K5 d# J - ! `& b; ?9 V! O# S! I
- * User: user/ b `0 C" m" f! V% A
- * p1 {/ C* A9 E
- * Date: 2018/8/16' D; E+ H5 t5 v5 f0 F
1 O: o# Y: u9 d7 q/ R& p- * Time: 10:43: Q! Q" _& H8 F" O, C
- " i# v9 _$ D6 N& w) b, d
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";
- Y0 _. \; O& o8 j3 O( H
; Z. V, X% Y. e. K8 |- c- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称* `, D1 t# i3 M( }* Y3 L& j5 w. S
- . k2 r9 D- f4 ?3 ~# G
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是) V4 f/ }( B, g Q
- * A+ E8 @' \: z! F
- $margin = 2;//边距2 |2 o# D- P) ? D" H' s
8 H" h' _" ]- T- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
* q8 M, i! M- |, R - 6 `* [0 u& w8 n& j2 c; G
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ / D2 ]1 S' o9 s
- , m, y3 h% F# b( ^+ s/ C4 p
- $QR = $picPathAndName; //已经生成的原始二维码图
7 I w g. r, a
$ h( p) X# Z& J/ I- $Logo = './pic/logo.png';
6 g- v: I; ]7 q2 X: O( C/ W
2 R& f& P9 T# ^* Q! a$ o- $Logo_re = './pic/test_logo.png'; / ~% Z W* a% A
& ?- O4 T- x" H# n* }( s- $QR = imagecreatefromstring(file_get_contents($QR)); ( g. ~: l7 T9 _# L- q
- ) t7 h0 \+ |3 Q; G! c! j
- $Logo = imagecreatefromstring(file_get_contents($Logo));
0 a0 K; j* _" e8 N- U" F
1 o K& c- p8 f- $QR_width = imagesx($QR); //二维码图片宽度
9 N e6 a, N0 Y# ^& { U, D9 i) {
$ |- L, Q+ g' @0 @- $QR_height = imagesy($QR); //二维码图片高度
* e% k) X- u+ I# n - ' z' [0 `8 Q- y$ I! O2 [0 l
- $logo_width = imagesx($Logo); //logo图片宽度
- g. T2 x2 I# O. \) g' b - 1 }0 z* P) L! K3 N0 c' m( O! w9 F
- $logo_height = imagesy($Logo); //logo图片高度
) [. _' D1 O8 j# q$ `: d - 4 j% o) [2 H* U+ v9 k
- $logo_qr_width = $QR_width / 5; 8 I8 |0 b$ g/ Z; L8 J
7 ~& W9 p8 y4 o; |6 H' _- $scale = $logo_width / $logo_qr_width; ( p8 x+ @' `, P
9 u4 B8 s! U7 S0 t+ B# \/ s0 ]- $logo_qr_height = $logo_height / $scale; 9 c) Z; b6 e {; }
- 5 K- c9 j- D6 h) e Y) b5 j4 @
- $from_width = ($QR_width - $logo_qr_width) / 2;) B$ |4 N4 L" e6 w( Q9 u% w
/ e0 r- _+ `2 p! ?, n+ e+ ^- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
+ R( e2 a. \9 X
- F( Y1 b1 ]& D# c- //输出图片# r3 i# b; Z. _( v" j! K/ B
- , v9 U: _% f; D) l( r0 o
- imagepng($QR, $Logo_re);
4 F, \3 [+ E1 [ - * b. B' Z. A* Q' ~- v3 g
- }
& ^) C1 ~* Z; N. B
' O) A" T' t9 I4 j4 j: z9 {* }; N
3 x. _! j" d. R1 K
复制代码 3、qrcode_vcard.php (生成电子签名)+ Q; g3 o+ r5 a# C
4 d& |" t! O3 J
vCard格式:https://zh.wikipedia.org/wiki/VCard+ u K! i6 x' \; q& M+ I( s! r% q6 _* N
" z' o* s/ P7 C. C, y* P n1 ~
1 d2 Z0 Q) Z) F- * Created by PhpStorm.4 q' j6 N( Z& n) |+ @! l; Z6 u6 {
- 2 a; i6 C, p3 {- A$ `" q* A
- * User: user3 G# L0 u& K8 Q
: c" N" s; G4 {+ \# H- * Date: 2018/8/15
/ ~0 l3 f4 P9 d$ `% p$ ] - 8 K) e# x! [: F/ M) M! |
- * Time: 23:00
5 Y& ~" v- r- {) O9 ^
5 o6 ~1 d8 t/ b4 R0 _# j' F" B- */require_once "./qrcode/phpqrcode.php";/** I/ |6 A8 k5 Q; Z, S: ^* h. o
- & r4 d3 K E; I, _; s
- * 生成电子签名
; V! f7 K( F! y - 9 W/ g/ f+ k4 d* S
- * PS;使用微信扫描二维码3 p2 z; w' H# u2 e8 n6 V! E; I
: ~6 m3 d2 A. O2 d {- */$content = 'BEGIN:VCARD' . "\n";//起始标志 Q8 ^, @( Y- j7 X
- & I. k: [/ m) C3 Q- f$ R: _& N
- $content .= 'VERSION:2.1' . "\n";//当前版本
% i+ p6 {, u8 d$ ^ - 9 J9 ]* x! N f7 Z2 x( J
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
* Z( y, O: I6 {( ?
9 k- |& N8 _: Z1 E- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称 O3 U$ I! i, v1 ~
7 O# a% I% E }# }9 e- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
, _4 C- o3 i$ P3 o8 {8 \) U - : M# O& `( C/ H& W) Q$ W
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话: B6 o% ]( l9 J
( ?- Q; U0 w( |* [/ t/ L- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址$ C1 a7 Q, D) ^3 ^- R9 J0 E
- 5 s4 S$ U- Y& p) L. c
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
$ r( h8 k* @) q, s( d - ) Z8 e1 S" G+ Q* A
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
5 Z: _7 S$ h4 T5 w - # y1 y) r# k/ U/ y; M! Z; |
- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱8 H9 S( E- l! u5 _; B# ^+ J
- 8 a) o" u( ]. J6 T' `7 V4 m! Y- M
- $content .= 'URL:www.baidu.com' . "\n";//个人主页 b j4 I& }. X! n* Q9 K
, @0 q% c8 n+ o- $content .= 'END:VCARD' . "\n";//结束标志8 v( w5 |3 y+ p
- Z7 d/ r- g* \& d4 b* J- QRcode::png($content);
! W# W n9 Y2 j% v; E0 ^ j ~
3 A* B+ w# t( f) M! w- $ ]- ?4 E9 Z% i' g) o& b
复制代码
/ n" d9 L" K6 E2 N9 G相关文章推荐:% n p' I2 a( N
1.PHP生成微信二维码实例
" N7 D! V2 c5 M8 Z# h, e& {+ J2.php网址转换生成二维码
/ Q+ x( l4 b" g5 C0 N6 K相关视频推荐:
; x4 ~0 Z2 X3 t, p1 z1.独孤九贱(4)_PHP视频教程
1 U2 x( Z! r/ O; b) A- C9 f二、JQUERY生成QR CODE
8 D& o0 b5 e+ K, P$ A% H源码地址:https://github.com/jeromeetienne/jquery-qrcode) d$ r+ ~* M* V% A2 Q# K, \
5 c; ]: `# w; w, bjquery_create.php
7 Q$ a1 [' `5 [0 X0 W6 Q. ^# w$ ^! N0 B& k. L, B% Z
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 8 y; l G: W. L" Z) }) Z% j4 N
三、PHP识别二维码
1 X1 W) i1 g5 | ~; b1、方法一
6 V* f# M, n% ^环境需求,安装如下扩展
7 f9 d5 W; g+ T1 W; w- ImageMagick
& j0 i4 l1 |) k& E6 V& _- zbar
" ^1 C4 [! S# E% C4 c/ z- php-zbarcode* D/ ~7 e1 R" y: O" R! [# R" V A! u
' s/ f( j4 B @. B) g" l4 E
2、方法二
$ M. @' w. y2 m v# NPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
7 @/ Q$ i* `2 ]7 C7 ?qrReader类:https://github.com/baagee/php_QrReader
* U0 `- H5 x# u8 ?% h/ \' b0 a# ?8 `9 _# f8 e- m5 ~
- o6 J* M y9 Z
- $qrcode = new QrReader('./test_logo.png'); //图片路径& S8 l% X0 ~- E+ o9 J
; G! W5 v% E) F: R1 _- $text = $qrcode->text(); //返回识别后的文本
5 |( g* f. z+ j+ P8 t
* D& r& z- L6 `) r0 Q- echo $text;
+ G4 X/ Y0 N- J, `8 O2 J, v - / k! \: M/ c# ~
- ' u5 c' Z$ s9 B9 r+ v7 y
复制代码
. W7 v6 |" `8 u+ Z1 h7 p9 {" c链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
& e" W! y+ ^6 Q9 N! O. F0 ]3 Q# F/ |9 x9 p# G, H% E
2 J6 {/ F4 U( r- c/ _
5 _( W( s4 y2 I
' d' Q. G9 g/ k# H2 [3 k9 q- _3 c$ {
& x. v" {5 v* H& V% r' k- A
5 V: P @% P& d7 e% e2 r" s* e/ D7 O- g+ Z( I
& F1 o* `/ W( Y" M$ J |
|