管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。! H# i2 w& J$ D% w( r+ k
---------------------------------------------------------------------------------------------------
' F4 U5 f* y: k$ A+ L' M9 {' i0 V二维码的分类/ h8 b$ z5 z+ _
线性堆叠式二维码- r. `* r* f3 X, L9 t, o
8 q" F7 v& n# _2 B7 L矩阵式二维码
+ k) l! h7 w1 f/ p# q4 f
" U6 N# S6 R6 }# ]* k6 g# Y二维码的优缺点
& M/ A+ A( |& m2 W, F优点
( U. h0 Q m6 k! C4 P信息容量大
2 X! v" N8 t9 a
. l$ W* e- S. d4 @) o编码范围广
- R# p' S6 X3 E( ?% {/ |- ~/ m
: Q3 x5 v- y) Q' s. C: W* J容错能力强6 n! g- ^4 g; s( u$ D0 e
3 F; G, J6 j2 M5 c译码可靠性高
' w6 Q' z9 u( ]$ ]/ @% M8 a4 F& I) W" j# S1 \2 N2 C
可引入加密措施
6 \& }% ~8 ]$ t
0 M( `+ k/ U2 {成本低,易制作+ O/ P e/ i' |& n" u4 K" A
5 _# i3 Z, k7 D缺点
* R3 k& z: h# S- e) H/ K二维码技术成为手机病毒、钓鱼网站传播的新渠道
' h3 m7 H3 l# h) Q" x p0 b
7 Y% @4 o+ t/ O+ S, Y# Y; m2 ]信息泄密5 t" e4 {3 ~* U0 X* Q- x1 I' o& C
. G% x1 @8 ?& g8 m- ?# b
目前流行的三大国际标准
- X: ^# W; O( N0 H0 d5 E, I. O( f" `% [PDF417:不支持中文+ q, ?! E3 [# y* m
9 z% b$ Z" k( x- {
DM:专利未公开,需支付专利费用1 w5 ^) T$ D6 f4 s- Z: y9 l/ V. S
2 C0 `$ P! {' Q0 i1 n3 n' U/ r6 |$ n' vQR CODE:专利公开,支持中文
' |4 }1 n% ~) j7 ^: t$ e
# Z+ L3 Y, ~! H4 {6 w8 WQR CODE 纠错能力
; T' k7 O0 y0 f# i. {9 d, KL级:约可纠错7%的数据码字) Y* |8 x/ \$ E9 n3 E
+ _0 D. ?; N2 l Y) T9 EM级:约可纠错15%的数据码字+ f8 |% X. u: G; P" u
% y+ e% {$ b# ~2 q# ZQ级:约可纠错25%的数据码字- ]# P0 f0 J! m! i0 p9 p9 b
7 s# ?$ K. [' ]/ U$ {% RH级:约可纠错30%的数据码字
1 U$ I" t" _: u. o- ~5 ~2 ?
. @+ U: f% |1 V* M前提条件& x3 W8 C8 e+ Z! h- @
GD库& `4 J( [( @/ Z
+ j" a8 t0 ]4 F0 X一、PHP生成QR CODE; `+ a3 M. y% _% L
官网:http://phpqrcode.sourceforge.net/
5 Y) H( F* R: b S. m6 z" J4 v! `. {- ]& p0 w
下载源码:https://github.com/endroid/qr-code
1 }0 L- i) v; o8 B- Y
% z# ^6 \8 f: H, ?" B$ L( ^* f" u4 U目录结构
8 n, V8 z7 _% A# E
% P1 T8 q7 [; F$ m6 o t! I* x7 y9 [* U- ]$ d
1、qrcode_create.php% X) m5 S: n; h6 e1 { w0 {
ps:生成普通二维码; f( k2 D' D" v/ L# x$ i
- & U! p) X8 l0 b" p8 o
- include_once "./qrcode/phpqrcode.php";/**5 z/ O* U$ O* m+ A+ _4 K
+ S& P7 l0 ^ [) R- ?9 O% E- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径7 W o$ B M+ R- d9 K3 \, X
6 [6 t+ o( y3 m+ M8 j$ C' `- * 在浏览器上直接生成一个二维码(内容为abc). n; d3 Y5 e6 W
& R: X" c( {% u/ V8 a! Y+ h- */QRcode::png("abc");
- n; h' o4 K6 U" i ]- V- h - % I1 m9 H, H' Q8 _8 g+ M, f }3 i0 c
- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
Q+ Y: ~( U0 E, J - ; x" @# @: k5 _* k
- * 生成文件到本地. V9 G# M q3 y6 v: Q
- F' `6 S( I% X* Z- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)/ Y$ W* q9 a ^% W
" T; u0 I6 V6 h5 |" I+ K! {6 Y- * PS:$saveandprint源码的p6参数做了修改, E; A# a+ S. Y- P& z
- 0 Y. R7 {, l/ `8 [! t) A& C3 n9 J q
- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);9 g! _/ e0 O, b& h( i1 C
4 D! T8 G- ], Q0 D7 r$ j- 2 \" o& _# d; c8 e
复制代码
" x- R) R% [( R" u' o2 V2、qrcode_logo.php
5 ^9 l2 Z" m) l6 gps:生成带Logo的二维码- . n4 Q3 [1 x* ]/ ~+ u
- /**
- S. a/ L+ X+ q+ L% [
) Q9 D% U' k B: Q- * Created by PhpStorm.4 N7 J6 c: X( Z- b0 O U$ t
: O9 Q& x' `* V- * User: user
7 v$ @7 Z* X/ E8 }. z - & o5 v0 s8 I# H2 ]/ N
- * Date: 2018/8/16. c! N' h& j. c; ~! l
+ l3 V/ l; e6 m4 U& D' w: w- * Time: 10:43
6 d9 v9 u# |: Y# _2 P8 s% R# s - / c N w9 [/ T( f0 @4 v0 o
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";1 O! M+ X7 W; E$ A& n$ {+ B& k0 s
2 E5 R5 |. b5 [5 m/ Q- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称# _. g% R* f, \ c: `7 }
! f+ X9 M: j ]+ M- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
, c; x% Z2 V6 P8 T- ~- u& C, }
$ S5 A8 ^1 |) u4 X# V- $margin = 2;//边距
& f- U( h& i* y
! r7 Z) O! t; C, U2 E( G2 ~- ]- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片- |: U3 X! E; r8 R0 S
- ' \2 r" j% [5 J
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
7 c$ M: i1 O3 }) t8 U9 B: a
6 d( O; J' q, o+ J5 t- $QR = $picPathAndName; //已经生成的原始二维码图0 F$ {3 N# z( v0 ]
- 6 ]& c) |/ e( f o3 s
- $Logo = './pic/logo.png'; ! n4 Q7 \4 s- _0 \+ g
' `; W7 l( @7 a' }* B5 O4 {- $Logo_re = './pic/test_logo.png'; . [% W; i4 j; J0 i
- ; Q/ G$ v/ ~8 r* {
- $QR = imagecreatefromstring(file_get_contents($QR));
/ u7 N$ u/ V* m. [3 U& q - 4 E% v, @4 d9 q+ D
- $Logo = imagecreatefromstring(file_get_contents($Logo)); 6 c- U' c6 K* D* S
5 B% s6 x6 p% L3 d' m" J2 I; G- $QR_width = imagesx($QR); //二维码图片宽度9 O* O& z% ^. b! x/ C
2 G& x) }; z% W# M7 x! e6 \, L- $QR_height = imagesy($QR); //二维码图片高度
2 e5 y% R. u% R( k" t7 v( S - : }; E1 f9 I, j1 y, q
- $logo_width = imagesx($Logo); //logo图片宽度
m, d, }7 i* [0 U
* f$ o2 G0 h$ |$ `- $logo_height = imagesy($Logo); //logo图片高度
1 T# S. x" M$ [6 B - 9 Q' t5 n$ V) C: o
- $logo_qr_width = $QR_width / 5; % s) v; `6 e8 F# m. ^9 z4 C; `: Y9 A
- 2 p( M: [7 p2 X! q( M: H
- $scale = $logo_width / $logo_qr_width; / ]# v# |/ ?# }
- 0 r0 p* w$ w2 v6 h) m# B
- $logo_qr_height = $logo_height / $scale; * i" W3 O3 Q, C# A n* G
2 ~0 |/ S+ @0 b5 V5 s- $from_width = ($QR_width - $logo_qr_width) / 2;' F! s0 u5 n. f7 q
- ! t" `" ?* J$ o% ?, B4 r
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); : Y$ O J" ?. O* b, K; \
- $ z3 n& n9 m o9 A! A$ }
- //输出图片
+ G! @3 y/ T* ~+ \$ V; l
; d" l# v. `1 `% `3 w9 Y; o$ R- imagepng($QR, $Logo_re);
2 i& ~9 k, J/ l; R$ B4 G5 p+ T5 ~ - ) n7 v8 B8 X9 i9 X8 x8 D# r% N: s
- }
# q- l! y* }1 n1 L. L6 u! _& r
3 J& c0 H% I c& a8 Y: R/ B
0 y9 P7 ~/ y, s, D! p
复制代码 3、qrcode_vcard.php (生成电子签名)
$ j2 I9 q5 P; U) ~6 d4 X& x/ P: _8 V( H& n' K J( E
vCard格式:https://zh.wikipedia.org/wiki/VCard
# s2 o8 g7 X) ^8 P" D* X. \4 ?' x( X
7 S: |6 y# _, x% P
) Y/ T% H( `' c, K' b- * Created by PhpStorm.& R/ i. S: r, p* _$ I9 D, q
* B6 p Z5 j4 |" C8 E7 x& q- z* M- * User: user
! G, |" r: k. @( M
3 {, l: H; u. F, }/ b- U- * Date: 2018/8/15) J' g. O9 g* R0 n, m' u
. }& C# o! O- L8 h- k, H7 C: H) D- * Time: 23:00% {/ a4 u) R. c) X
' _& c& {; q- |- */require_once "./qrcode/phpqrcode.php";/**( | h, K2 ]3 F
- 5 B7 |/ ]' T- D& e( y
- * 生成电子签名9 R4 Y& M$ a' w- K) v* w
- % ~, H: k z! L5 L" ^
- * PS;使用微信扫描二维码
' B" \7 U2 o" E+ U! G* M, n - 0 u6 e' m0 O3 X9 _8 s h7 c9 f6 v2 J
- */$content = 'BEGIN:VCARD' . "\n";//起始标志- l% o* n* M- Q1 |6 f P
- 7 j9 T1 f O9 E! V" [
- $content .= 'VERSION:2.1' . "\n";//当前版本
* u, t$ u$ U# E - 6 u! C' J; `3 m7 F3 I
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名4 }2 f) `, T: {. n H
5 L( }" Q( A8 E D* j, L- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称6 C- C8 k9 ~ R. s0 e* z0 x
! R r- }4 y" }, \" u" p- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
, @4 Q- j. a& R8 Z4 D' v$ I
, N2 b8 I. c8 |) a- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
' J# L; Q- ]7 m; e) Q% _
; z) f4 }* F" [8 w- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
) }1 q8 z9 U$ Y: d - - {% L) F* T. p+ b. N
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
1 {) c* l6 \, O* m' n - . O5 K) m! R2 z+ Q' d. u" `
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话% p1 T7 b. t4 t/ g, d6 J
/ P% v) b8 G) O7 Q" ?- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
`" T: q3 Z* Z$ P% l+ L - 6 w, O \1 T& j$ w
- $content .= 'URL:www.baidu.com' . "\n";//个人主页
6 M' z2 r+ f/ l$ X- I) ?& \ - : h- F7 ^8 S) ^$ P( c
- $content .= 'END:VCARD' . "\n";//结束标志
6 c! P; o9 P3 {1 k' E- t - 0 o7 \9 d; a G* o
- QRcode::png($content);7 P! }3 Y, C% n% V; A
- / u4 y2 o# U4 Q4 z% G
- ( R$ l" k" e& o! i. b
复制代码
! D. b' s; {3 v3 H% i相关文章推荐:
0 X- L7 B D5 t1.PHP生成微信二维码实例
) l A; a/ \/ Z0 C) W. k+ O2.php网址转换生成二维码% u! e1 a4 N9 s; M" q6 R
相关视频推荐:0 T9 l6 F! m) s) w# E$ A, I
1.独孤九贱(4)_PHP视频教程
]1 Z7 E, h1 Q' g二、JQUERY生成QR CODE0 V& u& M! N/ }8 ]; I
源码地址:https://github.com/jeromeetienne/jquery-qrcode
1 u6 ^3 ~3 M) b9 w* a1 Y' [* h2 z* [5 ^0 [% l# l" K
jquery_create.php
! f2 L3 J% F7 r2 B, T, y/ F6 s' W: d5 k. g$ l: Z/ u
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
" d4 i4 _ {4 y* z& T三、PHP识别二维码$ N( F- R# h7 T; _& E
1、方法一" b" Z! T% u! x* x8 n ?: V8 G
环境需求,安装如下扩展
: a+ F4 l" i( t+ m- i- ImageMagick
* w( M. d! H' L& W) @- zbar
) [( b. j9 l$ H5 v2 H; f2 h9 i. E- php-zbarcode# E5 g' R9 X# w+ r0 @
& R2 r# d& K/ T& b6 ~2 f2、方法二) Z7 h9 J6 A+ a7 [ {3 o
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以/ b ^/ c2 u8 X
qrReader类:https://github.com/baagee/php_QrReader
3 K" K8 f8 `, @6 d4 v1 `# g' g
, Z6 j! ~3 D# ?) q7 H- 6 _: @2 B; @" ?
- $qrcode = new QrReader('./test_logo.png'); //图片路径
+ ^' P) K d6 J: k4 p1 E
: q, b1 E1 J6 i: P( _& p1 w- $text = $qrcode->text(); //返回识别后的文本( U, n' F: O% v" q
# Q! Q, J" q- U, C- o8 N- echo $text;2 I5 Z+ b2 j9 Y) a8 v0 _
- # v# Y( m. `+ W. U) ^8 [/ J
3 {# Y6 |7 D1 r, p. z2 E( F
复制代码
* }% b( j, E6 Y. R6 U* f链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7- e# G/ `+ a( [6 _
/ A3 v2 W# v3 I/ \4 n
1 R. f9 h# u* A3 Y0 [1 ?
j1 U* W+ E" @& i/ {& n& ?
8 Y P+ B# N" m) i4 `9 q
. O2 O; R/ h4 H/ j+ Y4 }0 P( P; ~: O: E6 |5 P- }7 w* k3 C
% i& @8 s0 b4 M. Y
( i7 E9 b0 }8 ]% f6 d2 u F* U! Y& z( V$ u: ]
|
|