管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
8 W- h4 S; ~( f. u7 m, A p7 t0 W---------------------------------------------------------------------------------------------------
2 `* k0 ^& b; v# S) B, N4 g* X二维码的分类" L- w8 n# ?# m) |( J8 S% d
线性堆叠式二维码' r6 A$ m1 f& u+ I0 l: H0 c
+ Z. S2 p1 t$ T E, X
矩阵式二维码& Q& ]. X/ h$ p9 ~4 C/ y
' @1 p1 L5 ~$ w8 V二维码的优缺点
1 E) _# P6 J1 H. y1 Q8 a优点+ s/ e) u( n0 Y2 O- X
信息容量大6 ]. u9 Y. h! f D
+ b' y* D* O) X+ C W+ Z
编码范围广
0 K, N/ @" R Q5 Z4 P' O7 q
' z' A! g$ \, F r容错能力强
4 C6 W/ l k4 }, f$ D7 ]- U8 M
" o7 I9 T& a+ }! t% q译码可靠性高' A J- v/ E8 `( Y1 x
2 B% E( K9 ?. i) h& j |# y可引入加密措施0 k$ r) |7 P/ K% k5 [" i! v
. B' E2 Z3 ?% |) I$ E
成本低,易制作
8 a' P. ]. ?0 ~! n5 ?; o
8 W2 _" B/ g, i) ^缺点* [& u7 h+ X2 F9 |) K% Y0 {
二维码技术成为手机病毒、钓鱼网站传播的新渠道
8 B2 l. d' W( Q0 j0 }' G ]" u
% r% ^( f; R9 @7 F* u F信息泄密
4 J1 y( b$ Z: h% R2 u B( [$ l, L3 W& l" K6 r
目前流行的三大国际标准
* U1 g1 y- k' U/ Y) rPDF417:不支持中文
: q( l; `0 p* d7 ]$ J5 S
, z* i6 p. @' i- o3 X RDM:专利未公开,需支付专利费用
9 a- H. A8 V# H
* V& J0 {2 \. ~9 YQR CODE:专利公开,支持中文
. `: W+ O3 W/ Y! b8 O
: y& V, J: b$ S* @QR CODE 纠错能力
2 g3 X2 x/ s, G+ m# q9 EL级:约可纠错7%的数据码字" w. Y2 W% a: e* A0 f# H V
$ S' {- Y: x) x6 F* FM级:约可纠错15%的数据码字% V p" N0 i% a# ?* J6 r
# o R: L, ]+ ^! r' s) CQ级:约可纠错25%的数据码字
/ |+ `. T8 C# @8 c/ o S! M" ^3 u! z5 M7 n- `8 }
H级:约可纠错30%的数据码字
" X/ ^) w: p9 d' o0 o
; H3 A3 A% d e前提条件* y+ Z2 Y! [* h# Y! {
GD库
9 e+ R' l) n0 D9 R' s' ^. E* F! F1 S I) @
一、PHP生成QR CODE, `% Z8 b+ Z9 b$ Z" F' N& V3 r
官网:http://phpqrcode.sourceforge.net/& p! G+ {& h! n2 h, w1 c$ b
: M" a2 L4 d. I* V4 P3 L) n& V下载源码:https://github.com/endroid/qr-code# C0 I. Q, w5 x9 p0 f
8 X( [* ~) u" ]: d u4 T' B0 F
目录结构
, f& r& y2 h. y
* `4 I/ U I9 X0 G$ ^, r- r
! R7 u$ C+ l5 V$ @9 B3 i( y; z1、qrcode_create.php
- Q" c7 V- p0 w9 [6 ]4 `- v+ ~ps:生成普通二维码
' W: n7 @" [+ L2 ?8 {, J2 ]# Z
S$ K r; u+ k# X5 B4 G7 F/ z7 y- include_once "./qrcode/phpqrcode.php";/**% y' e) {! S2 w9 f/ R! ^" h
- # F# i4 J3 u" @/ `# {
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径* ~/ q2 O# X! n4 n
* m9 s7 l/ R5 F: s- * 在浏览器上直接生成一个二维码(内容为abc)+ I) a, s2 f, y1 c( Z& j9 D
9 S) u3 n: C9 n' `8 h' Y- */QRcode::png("abc");
: q5 r+ X8 P. d5 z1 E" d7 ~# ?
1 u# p+ l* M( K9 [6 J+ G- QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
5 O3 u8 I8 k$ _/ Y# R) M9 ^2 m% C - 6 y$ i/ j5 x; w6 n/ y
- * 生成文件到本地
* P8 B% b& t- o9 h- Q - : n' a3 a& ~0 p7 r" W
- * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
' i7 u) n- E/ y6 D& A2 {% U9 `
, \" [2 P+ F, ]. w7 g: T" v- * PS:$saveandprint源码的p6参数做了修改
* ?9 I+ R4 Y" F: Z' x4 ~) r
1 u0 [5 E" k4 }7 a- */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);! l7 N; j! s" ^3 b$ b
- : N- m+ D9 w8 o9 e6 [4 z1 Q# M! K
+ d' {7 L- Z: B3 x: T7 D" ^$ G
复制代码 ! b0 `1 c M ^/ e
2、qrcode_logo.php3 ~* c4 S. L! ~7 a6 y( T5 ~
ps:生成带Logo的二维码
2 g! [8 Y( I* o- /**" ^1 s( X$ P$ S4 X' ?; O
- 8 G1 n2 B W+ k. N% U# [* _- z
- * Created by PhpStorm.3 H( V8 E4 W, w) w( Y z
9 l( y2 N7 C1 g9 w6 g- * User: user: {# J4 z) ]$ X7 N& ^* M/ O
1 d8 @% K0 G# t0 Q- * Date: 2018/8/16
5 y8 ?6 L* k6 M- M5 ^, h) Z% H
: \/ Z g* P6 g1 H- * Time: 10:43
% R* E/ a m! U; U, L
& l' r; Z% {" d' Z( \: u" b- n8 x- */include "./qrcode/phpqrcode.php";$txt = "测试内容";( y1 r& ~! D3 c: G+ y& g
- 0 C9 p, e+ J0 C& }
- $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
}3 P2 w" y8 N7 _ - 7 I+ U2 x* P- J, S
- $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是# p/ W, c5 Z% a& q. [* \
- x. ]/ \* V; n. @- X$ Z
- $margin = 2;//边距
& w/ J# J3 i* a2 T& D
7 I: x6 V s, I: s- $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
3 {# ]( J" a* ?0 @6 T4 n - / p5 ^6 @" \: X: n
- QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){ 6 N. ?) [& {! ~
- b, a, }' P% o; E4 [ X
- $QR = $picPathAndName; //已经生成的原始二维码图
/ A. [# J- Q9 b* P1 r, u; C - ) c4 O0 H9 E/ D4 z, m5 m3 P
- $Logo = './pic/logo.png'; $ v1 H, A5 k" q# |# T. b
5 ~( _; B7 z! [0 Z6 l; Z- $Logo_re = './pic/test_logo.png';
. b, J* k1 P7 a" \
# F* @5 R8 ^6 {7 A; d4 w- X" ?- $QR = imagecreatefromstring(file_get_contents($QR)); % S3 F0 f$ @( o+ E6 b0 A
- + d9 j1 }0 b- m2 p% ]0 ?
- $Logo = imagecreatefromstring(file_get_contents($Logo)); 9 M. g3 q. v' E. J3 F
- 6 v% x) ^! [- v* G3 ^5 D7 i6 S- Z
- $QR_width = imagesx($QR); //二维码图片宽度
! p2 u, m3 m/ F8 E1 G2 J - - Q: s* r0 q( q' h* r) C) D
- $QR_height = imagesy($QR); //二维码图片高度
# g3 B/ ]- m( W2 G! P - 6 o6 ?. `$ F& M
- $logo_width = imagesx($Logo); //logo图片宽度1 Y& N' Y' V/ [ [, T7 }
0 u/ l3 q+ Y( W8 f- [/ t- $logo_height = imagesy($Logo); //logo图片高度
5 o' F/ j' `$ H' I7 R' y( j- f4 v
& p) R1 z' G+ C- $logo_qr_width = $QR_width / 5;
6 [% m: m; P3 `& m( l0 V - # R5 {, f* Q5 v
- $scale = $logo_width / $logo_qr_width; # [" y( g$ a6 |0 D
( E0 ~+ ~. f3 {$ N4 ~# `1 b# Y- $logo_qr_height = $logo_height / $scale; . E; ]& `6 V. l8 \+ V$ x+ w8 w
- 4 R) l: F& E/ Q' J1 a
- $from_width = ($QR_width - $logo_qr_width) / 2;% I+ d- n2 I c1 W9 @
, @4 ^; s, y9 _/ C& N- imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); * e8 V3 e2 x2 L' T! l; |3 u
- ; c P3 R* `* T, A' @5 s
- //输出图片
; f6 ~% j: n2 y' P0 l
; `* j% Z, x& t& [4 V+ l- imagepng($QR, $Logo_re);) S# Z5 r4 i' ^ B$ B
- 6 @, K9 _" W$ `, ~" A0 T- [
- }6 s! U, S3 I9 f5 |/ ^7 [
1 Q( @& R" w- ^4 a. F% p( x- 9 _8 ?) q8 z+ Y1 o; {
复制代码 3、qrcode_vcard.php (生成电子签名)$ f# i F# s2 \: j: ~5 f; I
3 C3 G' V$ q# B7 B- VvCard格式:https://zh.wikipedia.org/wiki/VCard j; T8 v) j; B
( M1 Z b( }; h( C; o- ) Y- ^; }+ D% b$ j6 \8 ]
- * Created by PhpStorm.! ]. x+ q6 H9 g- u2 R- Z& n
/ p7 Y3 D; d+ X) V9 T/ w- * User: user$ [: \0 s! f3 I* n7 m7 n) m6 l
- 4 d+ t) i6 i3 H
- * Date: 2018/8/150 c$ F4 i& p4 M& H
- , B9 Z+ W4 i. D" E F
- * Time: 23:00
6 i( f x) w2 H4 Y' b
" X& m9 z. k+ l b' k/ _/ g- */require_once "./qrcode/phpqrcode.php";/**
0 N0 x. R7 X0 C7 ?4 w
: L" Z7 b% w( [8 P, H( R7 H- * 生成电子签名
7 F% j' N5 S# t: _
& v I& p# M" n9 r" a/ P- * PS;使用微信扫描二维码5 `6 E8 s4 Y) ?* C0 e% F/ x! t
( u. @. C! B! }( [' p- */$content = 'BEGIN:VCARD' . "\n";//起始标志
, {1 K3 Z" h+ A9 ~, v$ b+ S
% t7 r" M p2 q! }0 O# B; ^- $content .= 'VERSION:2.1' . "\n";//当前版本% ?! |( k, N! M* D' O' I9 N
- & Z S; \ ]1 j% ? R! |
- $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名. q( p1 u; P. r {, \& n- }
0 m0 p' X" ^, n3 ]( }% ^/ w- $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
; l x! |0 d: {7 d9 g' g - # S7 v* u( @2 U% G' k# n
- $content .= 'TITLE:PHP研发程序员' . "\n";//职位
1 E( W& p, Y% S5 o9 P' t( v3 a - $ s8 j! e( P5 d/ ]3 j* E
- $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话7 C: l2 w$ g( Z# R) W( U7 l. @
- - c3 e& Q; [( M0 w6 ^6 N
- $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
+ F# \+ F& K# D7 D; a. c - ( D! c3 C5 s& t. q
- $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
( c" i* X) Y- V# X0 ?) R. e% m - # V. w0 f. i0 i# K" k! t
- $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话6 @( L9 e4 B7 c s# t; R6 ]
J+ J" _$ Z4 @# h- $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱" i! w% m: D0 K5 ^- R% e. O7 \
- E( S/ ?- ]% c0 p/ y {7 G- $content .= 'URL:www.baidu.com' . "\n";//个人主页. B( G, c6 u0 N
; d W$ [8 Q% V' L$ L# g- $content .= 'END:VCARD' . "\n";//结束标志
* `8 x5 _) f. o( j4 F, Z1 r - : t% V' `5 a. m( z) ]; V2 N
- QRcode::png($content);2 h3 `2 a4 e6 A$ v8 F4 r! [
- - e1 o0 q2 ~; u( w% D' P2 Q
- 2 U. f z. t) {) i& x
复制代码 4 d. s, q0 B- Q' X, w# @" z) [1 z
相关文章推荐:
# J+ C! h2 B: G0 r, U4 Z1 r1.PHP生成微信二维码实例9 x0 u4 E9 m5 x/ }
2.php网址转换生成二维码4 A$ O- J( y7 q9 g) Z
相关视频推荐:
3 R' N( P& _3 y) t8 d3 f" L9 z1.独孤九贱(4)_PHP视频教程
* [6 l0 y3 h' Q. {! b5 A二、JQUERY生成QR CODE
- h# J# \8 o" J# b/ N6 W$ B5 K( m源码地址:https://github.com/jeromeetienne/jquery-qrcode
1 @/ D, C. n" m, M+ C, t) a7 H; z" o: A9 u
jquery_create.php5 [( u/ L6 D/ K8 n/ [- g& U3 C/ E
" t* r' ~) e8 ]. I% P/ ?3 U! W
- <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
$ k* |4 [8 |" H' }, `& y8 W" g三、PHP识别二维码
! x- q3 a9 C4 a1、方法一3 z- i& Z& S6 |# `
环境需求,安装如下扩展
' i8 u+ c2 @+ a3 m- ImageMagick
6 _7 o+ @6 _. ]7 s% o, |# u- zbar. ?3 z$ I) U5 |
- php-zbarcode
$ P6 Q" x$ u1 Y5 n) [+ G& F# t- P2 A; Y
2、方法二5 |/ \5 z3 b1 q# |: ]
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
8 z6 F3 s1 L( k% Q7 q# _qrReader类:https://github.com/baagee/php_QrReader
' |" l0 H5 V% a( Y) `% M
' m' i9 M3 O( b* V# \5 p, f$ @% z- $ N* A- ?+ g" _4 Z: i# h+ T8 p% d# {
- $qrcode = new QrReader('./test_logo.png'); //图片路径
) | a, q$ J4 k1 Q2 R2 I2 e
2 I; i' c0 F/ N3 j$ H, L3 k. r- $text = $qrcode->text(); //返回识别后的文本4 \& p7 ~' y* D1 [" \$ Y' p
- 9 s' T W$ |; P+ H
- echo $text;; |; e: B* p( S- |
- 0 F0 C: O9 d% y% X. k h# m
8 @5 A% v1 W N% ?" g% o
复制代码
: A B( p8 p+ S' X链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y79 M" |+ c! {6 J; w
/ j( j ~( v5 W! ~2 _" r0 g9 B+ L3 L8 F/ E( Q2 P" C
7 q/ f v6 t$ z5 |6 z
1 b# K$ L7 B3 t
- @ M* C' s: ?1 A/ ~
k/ k0 x* O' L" Y
2 l5 J8 X% S' ~1 U. \ I
1 V8 T0 @4 L7 V' s0 N; _: r& U$ |2 b1 E
|
|