管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。6 T4 m! V2 ^3 K5 e _1 O6 E2 m
---------------------------------------------------------------------------------------------------
) h! X+ j, i; V二维码的分类
- a) }2 d/ Y7 T/ Y线性堆叠式二维码
# E: T5 U* P- y& d! M
4 j+ M1 K4 F: u矩阵式二维码
: `+ c( t1 X. @* Z& a+ A1 N9 @" I+ [5 k. c4 H A# `7 g
二维码的优缺点
- V% J9 E% n, |3 y2 ]8 D; G优点
% n6 _8 t: y$ ] v信息容量大
' r3 ]/ n9 T9 Y+ }4 X* x2 u
$ w o' T; S7 M# z# ~! W1 R* }3 W编码范围广
" q+ H3 V2 v6 K" G9 O: T& z& @$ z* ~ y( C
容错能力强9 [- j/ g6 E! e3 f p# \
f w8 W& y# |- E9 B4 j. N译码可靠性高
' B( C, \4 n5 `* ?7 d# ^; d2 J/ k
- L' d- l7 x4 n/ f可引入加密措施" t+ t0 A1 M9 ~: C- V* I
% T. W- ~3 K$ ^& B
成本低,易制作1 y* q0 Y# T2 U, I s/ x7 A Y' @
, X5 N. @; M1 e缺点
# p% p5 C( X% E' Z( _3 H& o9 Z; W二维码技术成为手机病毒、钓鱼网站传播的新渠道) J: |" b1 L/ q) l
( _: }( ?4 l- `! V信息泄密
. D: g0 Z, k4 {& c: O" M7 r8 p' n3 R5 W# a6 j* {0 W' Q8 g; l
目前流行的三大国际标准) p9 g6 t: e# Y8 q, M" \5 _
PDF417:不支持中文
# l) {4 u7 w5 \2 n( L* k' x- c" r8 T
DM:专利未公开,需支付专利费用
" K3 g0 T) l- g7 G1 o9 a" W( h5 C6 [
QR CODE:专利公开,支持中文
6 s: c7 s" Q4 i# V
& U7 B4 l4 N0 _9 I2 _QR CODE 纠错能力, O' X3 e! |- t; r! |
L级:约可纠错7%的数据码字
3 w) M* ]! N" t# ]& X! T+ ]7 p% j- S7 G% J2 W2 |
M级:约可纠错15%的数据码字& _. A( c6 |$ [( \
; q+ ^/ |9 h% V
Q级:约可纠错25%的数据码字
/ R, z9 R* V' d( D6 d# R( h+ n7 c! w+ @* H( \; U# J# w7 f# ]
H级:约可纠错30%的数据码字4 z: a( |9 f/ c- q- [' `4 c
- U2 e/ H! T3 ?1 m前提条件
; z& q2 [4 N" \' Q3 bGD库
8 x/ q! J8 u G% D) u% n9 s$ r o
) w( L* _9 g4 S一、PHP生成QR CODE" B+ \; T5 a8 B0 y" y: e& \
官网:http://phpqrcode.sourceforge.net/
. G0 s ^1 }1 U. B# s4 C
. {3 r' o" b" q' ?下载源码:https://github.com/endroid/qr-code) S! `* u2 { U e3 M/ m
$ {2 b" [ X k! r! h目录结构' Z5 E# Y8 P! n# Y) T
% N. v) V1 \# R2 O9 w, Q9 b
* P8 L7 E C5 r3 o$ [
1、qrcode_create.php! B& g2 L6 r1 d2 a' p5 u) M, Q
ps:生成普通二维码3 L7 ? f( B' }& ]
- : e' y4 b% i3 ]5 `
- include_once "./qrcode/phpqrcode.php";/**# r& T3 h2 |/ ]) g( x
! Y0 [) {& Q6 _/ ~- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径$ H9 B& V0 c" t2 J+ m& v7 e
- # c: \$ y7 g7 T, Y
- * 在浏览器上直接生成一个二维码(内容为abc)$ z4 ]- \* A" H0 O! W4 c
- # K" m4 ^, m: Z/ I" x; C& @0 B
- */QRcode::png("abc");, A2 n5 O! R* i+ t2 L
- 6 K) b' i* {& k1 ]6 W
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**4 y3 A' J5 w& z
- % K0 H! z W& ^4 Q5 H
- * 生成文件到本地+ _: i. z7 _8 m! P- ^1 k
- 5 M3 v0 K1 F, ?- m' B
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)3 a( ~" r: n# u; k6 O$ ]
& H8 M2 ^9 @. N4 r' V' ~- * PS:$saveandprint源码的p6参数做了修改, y5 w, R: k' ?' H3 M* [
e. |! K2 {/ k4 z/ z$ C- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);% ~7 e9 N& S' `: m1 d o
- , @4 W+ z% I8 G* x: x
- 1 E9 ~; P! {7 M; ~4 f% ~
复制代码 % X7 D0 R6 N! B$ E7 A
2、qrcode_logo.php: K, f* @" J1 K3 p p) A& ?
ps:生成带Logo的二维码- . O4 n2 K# z. u5 F3 V1 d. R1 \1 ^
- /**6 x9 t4 ^8 R* _% {, s1 \" p6 B3 i% T
- ) P$ B8 z: X$ V! e1 m p
- * Created by PhpStorm.3 l1 q* i/ w' X, l
, ~& w) [; W3 i4 a7 J- * User: user/ l# N- c" m; X/ W, U8 |
- % w" [' a6 |! K! e; d; J7 w' s* [( i- C
- * Date: 2018/8/16
2 h* X5 u T8 W2 ^ - " X0 b+ |8 L5 j* L; N
- * Time: 10:435 V- O. i. O8 E5 h
- 4 f' W; W. v; q, E
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";
, X* M, Z% K+ B. l$ M" v
& f. J& `- l) X- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
) h) x, t$ k; L, t; N; @
1 _2 E u& B/ I) e5 g- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
; s) \' p' E" r
4 g$ m$ h: ~& z- [! y( S- u- $margin = 2;//边距
' s8 D7 K) U% v% S2 {
) q" N1 d3 I' m1 r. s& o' \- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
2 s3 U, I/ i+ V5 |& k
5 q3 k: _; o, w [4 ]3 Q4 R- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
; c' V( J& i/ o y o
5 Q/ y0 s6 K% n0 Y- $QR = $picPathAndName; //已经生成的原始二维码图
& v9 p6 v2 V% O3 W6 ^3 {
" `- n4 ?0 l8 B; F- $Logo = './pic/logo.png';
. p1 U. _0 ?! A
8 D+ ~/ `& O5 x q3 M8 b7 |: a- $Logo_re = './pic/test_logo.png'; ' `4 }" Y, K# ?2 j
- " u* N* x- M8 E( J6 G# c5 @) N
- $QR = imagecreatefromstring(file_get_contents($QR)); + c( f6 u* W; [% ~# B0 p
6 H8 n2 ^0 U! W1 i- $Logo = imagecreatefromstring(file_get_contents($Logo));
6 _5 m6 q+ u7 t0 I9 K5 m
) b4 l+ j- _: K' f4 e U; O. B6 \- $QR_width = imagesx($QR); //二维码图片宽度
) Z; H2 [1 i4 m% N6 p6 [+ G
( ?1 C0 o7 o6 ^, {- $QR_height = imagesy($QR); //二维码图片高度0 f1 L- d5 W+ L* t' R
4 |& ^5 {' v6 ~0 B2 G) y- $logo_width = imagesx($Logo); //logo图片宽度
& A: A# \$ I/ c: C
F* M+ {0 J( N, d- v/ i- $logo_height = imagesy($Logo); //logo图片高度! x! a6 v& I' Y, v+ v
- : a7 @0 m3 T7 _* }; B
- $logo_qr_width = $QR_width / 5;
" l; X6 L5 I2 E& e3 k! I, n+ F# B - , V! Y# j- j7 a" N- a6 R; u
- $scale = $logo_width / $logo_qr_width; 3 S0 ^* r k0 b3 c M! {
- 2 H; g+ S" }8 Y5 X5 l
- $logo_qr_height = $logo_height / $scale; ! D3 {2 C4 l& S" _
" s6 _6 O% g. l/ J1 i- $from_width = ($QR_width - $logo_qr_width) / 2;. l- } D _4 k7 ^
- ) I3 f# A, E8 T; Q* j
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); ( j" \/ w9 e7 O# u! ~
- d. v2 c$ |( Z' h& D8 x: \- //输出图片
5 D) b# Q7 m: z) \9 u - 3 W$ R- ?, ?1 \8 u4 X: X
- imagepng($QR, $Logo_re);% ~, {" S$ E2 c7 B1 p, z; M0 \
# R' l# A k: n0 X' Y5 d) y- }2 i2 }2 l( w9 U% n
- 9 J! Y; A8 Q: l2 I5 d' T9 N
( G# Y: h* l E# H0 x' B
复制代码 3、qrcode_vcard.php (生成电子签名)* g( M( w. s2 L5 S( g3 }; R
2 T+ x' Y. d. F7 F
vCard格式:https://zh.wikipedia.org/wiki/VCard6 |# w& B0 @0 I3 I8 J
- H3 ~9 [/ k; }; \5 l6 x% T- . |' A u6 i/ v9 s' j; ]
- * Created by PhpStorm.
1 f' a5 |2 I! O4 ?" p* x
1 [1 l9 e C; E# C _4 m- * User: user
( j+ K" I$ e$ O
; q9 }& O9 y: b! p, Y, T8 }1 ~% R- * Date: 2018/8/15
- Y' Z. ^6 u0 t+ h' F - , b) O/ @$ q0 D* C/ f
- * Time: 23:00! Q( S& W4 U6 _" B
- 4 C: U |+ ]% W
- */require_once "./qrcode/phpqrcode.php";/**0 `6 u* n" V; x. _3 j0 k
" W4 t3 X4 o+ C) _- * 生成电子签名( K* l L. @) K
- ! E3 w+ I4 K% x+ D
- * PS;使用微信扫描二维码
% w) ~. D+ S# k* @$ \ - ( i5 e: h- j6 ?4 V
- */$content = 'BEGIN:VCARD' . "\n";//起始标志
# }) ~6 K- w1 a# u, ]) R
. A' E8 X( y' ?! ^. ]# D- $content .= 'VERSION:2.1' . "\n";//当前版本
. p7 W% w: P3 M0 s4 k7 g
) \. S2 a1 j) v/ N- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
! V/ L, u, Y# ^8 }1 _* b
% U& h8 W. h8 J4 p; I- e# j$ J- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
- u' m/ _1 s' l! b8 j - 9 n9 |) {8 Q" M9 r
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
2 K' h, S) n5 r: n% s2 W( e' v) Z
. S# G! G7 ~8 b1 }- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话" `- y. K7 T; X; y
# R' g8 S y' M: t, I. N. s! s# V- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址4 t* O7 t! y9 L* p% ]4 H
$ I- D0 v( Y# f5 a/ C( |9 V+ t- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)+ T$ w2 N, T" T# X
, U! z( R" ^- p( y- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话9 `8 W2 y [5 a8 G# j Q- `
, ~2 n2 S6 W3 H! @5 W- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
; v+ u9 d# O/ F- Z
! O" S' G! ? s0 n- $content .= 'URL:www.baidu.com' . "\n";//个人主页
" p/ z( P$ T* D1 Y% M" s" K - 1 K( J0 c( Y' |* G9 g
- $content .= 'END:VCARD' . "\n";//结束标志
. v$ r, O2 A6 G/ W/ y - ( t! I. @& r! c x) [! ?8 m, r
- QRcode::png($content);; x# a8 a( l1 b- |3 }) m5 @
- 9 _+ ~( l! u# _3 q2 g8 L
, M' b8 P) G8 J' o. S- N+ s" P5 X) ]
复制代码
0 ?) Z% r0 ]) d3 b4 ~) H相关文章推荐:8 ~( K" A; }8 D2 |4 ~
1.PHP生成微信二维码实例7 R( y7 Z: H4 E/ d& M$ d
2.php网址转换生成二维码, {6 y: F; s* y; S( [9 d
相关视频推荐:
, G* g! C' ^2 x3 r1.独孤九贱(4)_PHP视频教程
6 P# n6 `2 z& G0 K# e0 r0 ]二、JQUERY生成QR CODE' C* K: t+ p7 t3 n6 K6 {
源码地址:https://github.com/jeromeetienne/jquery-qrcode( m& f- H9 M9 Y. b4 I" Z
9 S/ {" _6 N4 ]/ m0 s
jquery_create.php2 E) ^, ~3 t Z- y5 q
3 P8 [" L5 z9 ^: ~! o
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
0 _, D" T2 T+ m& r. E三、PHP识别二维码
6 U5 S2 n2 ^# |; E q. `* Y3 J3 D1、方法一
2 ^: g* P" T5 k3 M% k, O5 ], V环境需求,安装如下扩展
& f7 B- C+ p# A) H1 E9 j- O& u- ImageMagick
2 D5 Z' r! V8 e% b% b- zbar
. n2 F0 u2 O& ^. G' v( d& h R- php-zbarcode
+ P' c9 R, s0 g0 h7 u- q v3 `+ T9 L2 `# I% G* O$ t+ V) V
2、方法二
1 V; `) K& Z) X; `, `PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以$ S$ I# z5 n, @' Q6 S6 [* r8 L7 }- `
qrReader类:https://github.com/baagee/php_QrReader
- N, ^4 c! J% K" [ h+ i
7 X6 K; G; I4 h ~
1 ]2 g; l* s' o& Q, s- $qrcode = new QrReader('./test_logo.png'); //图片路径
+ W7 J- X* W* b+ P' g; ]" b
- X1 `* q- T6 ]& M6 B- $text = $qrcode->text(); //返回识别后的文本
' c6 R* A* j& i& ]+ M5 i5 R
5 W) w; `4 c: N) t5 p- echo $text;# s5 |2 X6 e/ w, c4 E
2 z$ K8 a& n! e6 J) V- 0 P- Q. m, I* R) K7 x0 f
复制代码 % ~$ H" x" j1 u
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
5 I; [, W! f2 ?. P2 D6 `. k/ E- R" O8 h" V% v0 m. z; E2 x
# }) \5 [! S( ~/ q
* a ^' \+ _8 H! ~6 a( t3 P
: n9 C. ~1 v$ h/ D% O8 v2 w; f
& e6 ?$ T2 A9 F, u5 u' Y7 R6 Q- i
/ e9 B! ?% b3 g9 G: \; ^9 X* O
; e3 Q! y- ?+ o9 z( e+ u3 |$ z) D) G' c# Z6 j. L1 c
|
|