管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
8 H( [5 b4 Q- r k" L; l---------------------------------------------------------------------------------------------------- H' o' ]& i1 B# Y4 h4 A# _( O1 `
二维码的分类
2 v( l! o$ ?! o3 s线性堆叠式二维码, e( R: f4 x5 ~$ }+ Z* c# C, k
( R- |1 l$ I- k
矩阵式二维码$ v# f. G4 d' N. [/ Q
) Z. s. E! x) ~( E% e
二维码的优缺点
2 }. m0 I8 |; o& {优点6 I4 c ~7 C$ V+ n l, Z6 X
信息容量大& d' y4 j. u+ P
- ~2 }" m3 x1 B/ [) R
编码范围广 f+ }; g* n K8 A: S$ b, j. K
& u9 w7 a& q3 I/ s0 v2 c' A容错能力强/ d" o$ }5 s) \* N0 k# I9 H0 C' }
" M% c: v9 k% {6 F" G5 p
译码可靠性高
$ I( A, U, q" | Y& p0 L( R
% `. T: M+ y# X可引入加密措施2 |4 k( w9 r0 `! b; a* F
" ~4 t/ M) ^' T" L A# g; o成本低,易制作5 n q4 Z0 L* n8 i) N
' `" L" O. m' q. U3 y缺点
" e# f: ~9 A9 ?3 p& y0 |二维码技术成为手机病毒、钓鱼网站传播的新渠道
" _* D2 X" n" t& L" u1 O( T/ Q$ T
6 c7 u: b/ x, l% `信息泄密
, R0 c/ [9 d9 K
7 Y% L6 s7 o1 i目前流行的三大国际标准
- M) p9 N$ E9 V5 b4 c8 s* ZPDF417:不支持中文
% z' j5 k# @9 p+ R( J6 @: H+ {5 x' L5 U
DM:专利未公开,需支付专利费用
$ T* g6 s( O4 N( ?" L! W8 I
/ q2 A1 T$ g1 f& @3 I8 f2 j, vQR CODE:专利公开,支持中文
% o' i5 y6 A1 B8 T# j4 i; W5 P, J+ W/ ?' W: m( |+ ~
QR CODE 纠错能力/ q; X$ ?3 b. Z/ t1 ^$ x" Z
L级:约可纠错7%的数据码字( g( O; I* W3 Y+ H1 F% S
, H& G7 i& X3 l: d; Y# z
M级:约可纠错15%的数据码字1 C L) T; z1 G. w9 i0 f
, g1 [' o) O1 {! [. c' `
Q级:约可纠错25%的数据码字3 C- n4 Z- q- c$ e9 f
3 I9 ^# d1 H$ y' A* p; TH级:约可纠错30%的数据码字
1 Q3 z% w, h6 x/ e7 l. n
5 A l" E# |, @1 a2 k; X$ O5 q前提条件- }) A- U2 g5 n) [6 g; ^5 U( B
GD库
1 X( D3 q4 r/ r% j x8 w% x$ o( _6 \
一、PHP生成QR CODE& f6 J& G7 k( P+ A6 M5 S
官网:http://phpqrcode.sourceforge.net/
' ^0 L+ o$ D! c8 G9 [0 M, ?7 v, v( Q% u- I% E
下载源码:https://github.com/endroid/qr-code
' v! s3 x) Q9 r
- H; P- f, j+ F* L; p目录结构
! L( K2 a8 u5 R; u# E$ }
# f. t) _: L$ ~4 N4 |2 {7 V+ c3 E: Z& {* `
1、qrcode_create.php
0 a) U2 j {& _! x2 F% ~ps:生成普通二维码$ e. I) J+ L) S9 Q# Y7 o
- . y$ A- v( w; j% ]! _ E! f9 p
- include_once "./qrcode/phpqrcode.php";/** Y2 S$ y9 [# n
1 @4 r2 y( h. o2 Z- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径1 U* Z! ] i9 P# e9 G: Q
- 5 h0 q! A1 d) C: e$ S; J q
- * 在浏览器上直接生成一个二维码(内容为abc)
5 _+ b2 [. I6 b$ u - 0 I1 h" J p$ u
- */QRcode::png("abc"); e: ~5 m6 `, }5 R% g: ]
, t ]" n) L( ]* b5 X- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
3 P& t6 n+ T0 @# ]) q* v1 I - 3 [- J4 n4 P' _6 ]
- * 生成文件到本地. |* `. k5 R2 w! Z; Z- c
- ( n* ^. ]2 ~9 u8 }
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
$ Q7 Z' Y' F* L- c
# U5 Q) ^3 s- X/ [8 E- * PS:$saveandprint源码的p6参数做了修改+ Q0 o% }4 t8 J+ ^/ M6 O: K
6 c8 F v* w8 S4 B/ G+ h6 } ~0 R- [- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);4 R4 o' \' O5 E3 a8 V! W) \
5 P, s9 ~$ X" ^ |* I
7 T0 g( e) |$ [* a. v$ ?; |
复制代码
' w6 \. u& `) y7 e$ E9 ~2、qrcode_logo.php1 g _. I* r* u# X6 p
ps:生成带Logo的二维码- : q7 E, X% X/ \; R% C9 G" f
- /**
! d2 h) i. S* n: \& r
8 T6 X0 a$ E1 a9 |6 e) _- * Created by PhpStorm.
, g+ j; g& W' a- H7 b$ F. A
+ Z/ |" g# H9 v$ Y0 h5 g) _& ^' C$ j- * User: user
9 W& h1 @5 C; o
5 k4 N/ q9 C4 G, D$ Z# z/ o- * Date: 2018/8/16
* v+ K% s; g: B/ a% ]7 W - + U+ Q- v+ i; }+ j! M
- * Time: 10:430 Z# Z; h1 [9 F' J: o
- # I; |; K6 k" U
- */include "./qrcode/phpqrcode.php";$txt = "测试内容";
) J3 X0 X( t& N4 A+ H+ b' [ - + l- U _, q! M0 e2 `1 }1 Z5 p `
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
5 P5 Q9 i8 N' T' ~7 H* h3 f
( A, @ k" W4 e9 v4 V. x f- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
" R, J: B$ [# q1 ], J( C3 q6 v" N- `2 ^
* x( I+ t$ Y+ m- $margin = 2;//边距
( J3 K; ~- k" _4 J9 W/ x2 z - 6 ]2 X4 \# T$ v! P5 L z. I D
- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片- f9 x, B- N$ z( N1 E
- ( J( G- R8 j4 {" g' I* ]; P
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){
6 @" U3 j# M4 v6 o, d( B - : D! m- `; m, O& j
- $QR = $picPathAndName; //已经生成的原始二维码图
2 F; \' H; L! E' `
! V# w& M: t0 b' S% }- $Logo = './pic/logo.png'; " M1 [' ^$ w) o. \+ y
/ M( E2 B" d& c) v7 F9 ^- $Logo_re = './pic/test_logo.png';
0 R3 H! J8 c# i5 W& o/ r
, p9 @9 Z7 [) x- $QR = imagecreatefromstring(file_get_contents($QR));
9 ?% F* d7 j5 C- N1 H7 k2 _& N
- t+ n. p& w7 c. V3 a7 x. T$ h- $Logo = imagecreatefromstring(file_get_contents($Logo)); & J; ]" O( |, T4 Y1 A
/ g6 l- X# M7 \: U) S- $QR_width = imagesx($QR); //二维码图片宽度
- Q. J8 e& L/ |' ^; }# J4 s: l - 5 J3 `7 J# B2 `' w- {
- $QR_height = imagesy($QR); //二维码图片高度
3 W y) i8 j) W. G3 h3 Y' X% L - % i8 u, b( M$ Z, A. l2 v
- $logo_width = imagesx($Logo); //logo图片宽度
, p W; @; Y% S: m9 C/ k! }
5 K9 e0 Z$ x- q- n, f9 t# ?- $logo_height = imagesy($Logo); //logo图片高度3 G9 g5 }- C! e! `$ \5 c
- , `0 c s" v* _& H+ \2 h* w
- $logo_qr_width = $QR_width / 5;
. |& } q( V) |- a6 ?7 k9 g
, \, X+ U% A- E9 x: H- $scale = $logo_width / $logo_qr_width;
2 w& K/ q1 H1 `9 K7 D - $ a1 K8 Z. {/ ?4 M( y' O0 S% i$ N
- $logo_qr_height = $logo_height / $scale;
s% r/ r. Y7 H/ m( V - ( `- h8 v1 V/ e8 ^
- $from_width = ($QR_width - $logo_qr_width) / 2;
# y" @) O2 R7 _0 o. j - ; L' a9 L9 a |7 ^9 Q$ d4 n$ r: j
- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
' [' V; b4 M" N - : w }3 r3 @+ J! Y$ u y3 n
- //输出图片2 d$ @9 [! I! z
- . `- W2 `" L! j4 E
- imagepng($QR, $Logo_re);
1 Q U- L$ L3 H4 S8 Z
7 k$ Z/ y( B q6 V" _- }
; o. o9 I# N. V7 ?7 h" D
6 H+ \3 W: i8 Q0 _% Z7 F% @- ; Z0 o2 w- Z' y9 g, [
复制代码 3、qrcode_vcard.php (生成电子签名)
$ R; V0 v8 f/ `2 U8 N) c T
' n% e4 p: N- ^; C6 F% j3 FvCard格式:https://zh.wikipedia.org/wiki/VCard+ S- i# c$ g q
# { i) U! c! p- R" B5 D- ' r+ b4 Y r; [& Y7 @
- * Created by PhpStorm.
( H, Q m6 A$ X! k - , ^8 B( b# ?( ^: P+ k
- * User: user
" ?1 n4 ^& B2 I- x0 K2 Z
5 g1 w/ n* e" Q' U) b! c- * Date: 2018/8/15; Y; w: a O* @+ y
- % v5 ?, n% Q( G& k
- * Time: 23:00
& V! [2 C5 m% ?' v
+ {: q i3 d# [- O( ~7 c- */require_once "./qrcode/phpqrcode.php";/**
- [: v! M7 l! ~2 e
0 y6 I3 a5 [& C/ c% p- * 生成电子签名
! k% X5 y' w7 c; w3 t- @+ w
- K1 {" g7 y+ k% x5 C( b- * PS;使用微信扫描二维码% O( A; @- |3 C' E
& U) h: m% k9 d- z: n- */$content = 'BEGIN:VCARD' . "\n";//起始标志
d% T% s; F: r5 } - " y) y- _7 E3 `/ J$ {' _1 [
- $content .= 'VERSION:2.1' . "\n";//当前版本) i& K4 s& \2 ? F& U
- ; R/ W6 P2 |# e& W+ w8 @
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名" C& u. L% ^7 T9 S2 W
% J2 n5 _/ v5 \: e/ ~3 X- Y9 i E- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称8 _0 s: H l, ]0 t" [
! Q; N& q+ X9 q K+ I) |- $content .= 'TITLE:PHP研发程序员' . "\n";//职位0 A; V! a: I2 |4 ^2 E- a: h
) d# ?( Y# o* W* e- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
9 R8 [8 R2 I6 }; b - 6 v9 V7 p1 S: @0 p2 Y
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
+ f6 n- T, C- e# W1 {4 p
5 E* r) ~4 F% p- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
5 ]* o4 x- H& h& |3 z, Q( t - 5 i; _! a1 r- J& {4 O2 C8 K1 F3 g, T
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
: T1 T0 d" X4 Z: @8 k
* Z) }1 U: \! Z# l4 o5 s# t- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱4 X0 U3 B1 d+ T6 V. N% P& s
4 E7 W. z; c9 M! M+ S8 [- $content .= 'URL:www.baidu.com' . "\n";//个人主页
. o+ S5 D2 Q; O4 Z, W
) W* j5 ~& f5 V" L( T0 R- $content .= 'END:VCARD' . "\n";//结束标志5 H! R4 z. z% e; {# e* L3 o
0 i d0 s; _; z3 l3 L5 `- QRcode::png($content);
8 q' \' \( X# ~+ L7 R - # V) K+ I( @' z- i0 ^
- 3 g, `; }2 U; `( w( V) p) s7 H
复制代码
! _1 n( a( G1 w6 ]6 Y8 i& ^相关文章推荐:" k, ]0 Y/ Q% R' o9 o) H6 o+ S7 j
1.PHP生成微信二维码实例
3 g2 E8 |2 y- O& R j2.php网址转换生成二维码' l7 ]1 M. ?" X. k% A$ O! [
相关视频推荐:
+ |, d7 o+ U' M ]5 l9 x1.独孤九贱(4)_PHP视频教程
" U" A4 d5 Q# {- N% K7 z; F ]7 v二、JQUERY生成QR CODE
4 ?7 h- j3 c; b1 @- H; x% k; Q3 J( B源码地址:https://github.com/jeromeetienne/jquery-qrcode
5 _1 u: C/ S" y5 S
1 H* C3 w. z( G$ `& H7 Jjquery_create.php4 M9 S% L: W5 h% p$ g; b* e
. Q0 _4 u" c5 ]6 E; c
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码 ) T' H8 k* g' y. ?. f
三、PHP识别二维码+ z8 ~6 J2 x* d [" ^
1、方法一
, a+ @, _3 `; z* _9 _/ u1 M3 \$ L环境需求,安装如下扩展
6 c+ C U+ a# J4 K- ImageMagick9 U, w7 p# \0 ]& N; s$ d" u( c- b& B
- zbar
9 `& Q0 s9 V' W$ z p: Z5 O# `- php-zbarcode1 W9 u0 |6 Y c. y; L8 T
' p) P: ~0 z; C3 ^* j+ u6 e" H+ q2、方法二
; Z& B5 j8 N8 Y% q% `PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
4 V/ O" W* O; f( t5 l7 c. c" IqrReader类:https://github.com/baagee/php_QrReader
0 G4 j! S4 h0 R5 Y. e+ ], G1 ^2 I2 E) \8 N
- 0 S' n5 G; I' X" F8 q+ @ @
- $qrcode = new QrReader('./test_logo.png'); //图片路径
0 v% N7 A9 |4 A+ q6 j - + ]3 |$ e" w# p- s
- $text = $qrcode->text(); //返回识别后的文本' j: i; z6 Y$ y& e
- - T& x y* i( O
- echo $text;/ i& H. w7 n: p3 B& h* q
4 S4 p' V9 f* \# ~+ e) v4 S- & D3 \4 k: G; m( C
复制代码
; v* ?% {! y1 Y2 C/ R- A8 q- H链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
3 l; a7 O. Y; W: K, y
* O% H/ \( n5 Q* E' c
# w \& n( y7 a7 u
% t9 ^- Z _+ U+ o [1 `
! U/ e+ Y5 g, c; v0 s- a9 V' |( |/ h
) g% \( e3 c' p5 n
4 i; T0 P" A4 g0 k `" T/ J4 V2 F* v- n! U# ]- ^
* _5 R$ B9 R8 c" C# x7 X( G |
|