您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12953|回复: 0
打印 上一主题 下一主题

[php学习资料] PHP如何实现二维码的生成以及识别(代码) ------------------...

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。% z" B7 X, `$ D+ i( s9 W
---------------------------------------------------------------------------------------------------8 H& }- W" C+ g1 c5 f/ W
二维码的分类' ?  Q1 ]2 ~& ?! f; J, |2 n' e
线性堆叠式二维码
3 Q8 W% ~5 O* i7 S; H; i$ }+ Y
  F* H& l, j! @* k6 v矩阵式二维码; k4 l8 p- D( o" \+ ]- _+ L. M
7 [3 m: M$ C1 X$ L
二维码的优缺点
' M; ^; w; j" v- K8 W0 J0 [0 l) ?2 T优点
: c! e3 F9 U! u; L信息容量大: M  _. m" i- G) Y' X5 z, f- R: y

; c. [+ W1 y, T) I" y/ d% I- j编码范围广) j7 ~# U' a, }6 T

  h0 R3 L7 j2 w容错能力强
. I1 k& ]* \& B' ?& I8 x) {/ L  Z: L; {$ N
译码可靠性高- r: W, G+ a6 C( @8 g

% ~* a# K: A& U可引入加密措施
* v" k& V$ D$ K$ V7 f  r, U# R1 {6 K; ~! m3 q) Q+ J0 M
成本低,易制作9 V& ^" s  j- P9 O! ?
1 f* w! j0 G. w6 u1 Y+ l, j
缺点
. n1 ~: ?3 z0 }2 G1 o二维码技术成为手机病毒、钓鱼网站传播的新渠道6 Z; l* b7 d# ^7 u  c/ c% k1 k

# v8 q5 L3 t9 ?. C: ]0 _7 p; L信息泄密" T) n4 R, e! B5 n+ J  P) @# C0 ~

& @9 w# N6 t6 E7 I% p% @目前流行的三大国际标准
- S2 P# |7 V1 yPDF417:不支持中文5 @1 k7 z' G. Z8 i

& V9 J. c0 l7 S' K: I! E: \DM:专利未公开,需支付专利费用
; J; w1 ?8 F. |0 u- k& ?; {. @9 G) j& Q5 U
QR CODE:专利公开,支持中文
2 _# `  X' K+ `1 o' @: g
. h3 D0 X8 q4 h* E  l, EQR CODE 纠错能力7 Y9 C# r9 L: U
L级:约可纠错7%的数据码字3 Q, M# C" N0 e
0 b. D" y" q$ f7 _
M级:约可纠错15%的数据码字% {( g0 {5 ^3 V6 U3 L# @& s4 r
6 b& ^2 k* S0 g& U
Q级:约可纠错25%的数据码字; m  w! L9 N' I& A

" D# ^5 ]2 B% s" K* RH级:约可纠错30%的数据码字5 U4 ^. F9 F0 L3 q( o
6 Z6 I" J  S7 P8 j1 s9 F; n$ N# i/ c1 g
前提条件
/ D, g' I" l7 w6 {GD库
' B& Y% _+ s4 z6 z
" b+ }4 J- c- [) R, @& s6 w: i一、PHP生成QR CODE' R( x3 T- R8 a1 n  N" }9 b
官网:http://phpqrcode.sourceforge.net/
& S4 K6 [0 u+ t3 ^, i3 Z+ H6 ?8 W3 z9 B( M
下载源码:https://github.com/endroid/qr-code( Z  j2 |7 Y1 q8 K+ d

" |+ l# u( y+ c9 s8 m0 p& S+ [* V目录结构  l! ^. U  M* Z* W. G1 U1 f

/ t/ z( W  K0 t- u' M+ ~
% U0 Y7 _: M2 W4 B  y/ W* l& @1、qrcode_create.php4 O: A+ Y. c& x9 F, M- h! ?
ps:生成普通二维码
7 f- B1 t& M8 J7 J
  1. 9 g3 p8 X* j$ V3 W2 S0 I
  2. include_once "./qrcode/phpqrcode.php";/*** V! M: g1 F  e2 v  C' n7 K( `
  3. / _' ?$ {9 {+ u" V) H! C! t- e
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    ( ^' t9 T% V1 z, N/ G! i

  5. & ?; N% z5 j0 Q# ~9 \8 r: ?6 E* y
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    % N7 W7 w- q, G- ~
  7. # A6 U: N" g" X9 [9 q
  8. */QRcode::png("abc");3 p9 l. y3 s( R* r1 J4 o

  9. + u2 r3 s+ |$ }1 \0 L& w
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**' e/ \& z0 Z- F1 \) Z- }( y7 P  [

  11. * t4 x3 u- R  |2 z% P
  12. * 生成文件到本地
    3 n% r5 K  n% R' f  W" {* g+ i7 Q

  13. ; r- |8 d; t$ S6 v3 [
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    0 d2 i/ O% d, t: \
  15. 4 R) E. v: C+ K7 B* }/ U
  16. * PS:$saveandprint源码的p6参数做了修改
    / D  Z' v. L! V
  17. % I5 R( S4 t8 |* J& ?: |0 X
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);1 z* E! A2 D, s4 N$ x! ^6 a
  19. 6 V( S7 ]* J: C+ \; c. P

  20. 9 }' T; ]& S  P& H- {8 \, G
复制代码

% F" G8 V& ^! W0 g% c2、qrcode_logo.php
! g4 I0 v. x# ?- K' s/ [% Lps:生成带Logo的二维码
  1. + |% C* l" `4 p0 i
  2. /**; Z/ S; [3 X9 x9 V1 y7 z1 s8 E

  3.   }! b' ?6 J1 A* S  x  ~, z  t
  4. * Created by PhpStorm.5 d% s# q$ ^; [! _& M7 t( ]4 t
  5. " K, P- X* Y7 y! u# N1 m
  6. * User: user
    & L% y- E! Y# Q6 T# V5 d4 n& O
  7. + D5 H; g# [" n' s) A+ m% H" z
  8. * Date: 2018/8/16. R' M8 U1 \2 T# G

  9. 9 p& }$ f  b  P7 J9 [
  10. * Time: 10:43
    0 p9 b# W6 w3 ]0 R* X/ o: s
  11. ! d0 ]9 S' f, }- G4 a
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    , \, a; B: v: g
  13. " ]% {  L- Q4 i4 d
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称! l* @4 n, i$ T4 d1 L- G; ?
  15. 4 W$ R4 k; Z; P& w% X; [  u6 d. U
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
      E  `5 t5 A; f! Q! c9 Z

  17. " ?/ l! P+ l$ q! M; w" o
  18. $margin = 2;//边距
    1 X: k! z2 h  }) M: ]1 E& K% P

  19. 0 C0 U, p  E4 @; E  G* P' n" f
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    ! n: l  B4 g3 y+ k: v
  21. 0 S: e. h& z; M
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    6 w* j$ }% t4 W! T

  23. ) G2 P1 @+ ]9 b& S+ m
  24. $QR = $picPathAndName; //已经生成的原始二维码图, g: _& J5 f1 }" ~- i- H$ s5 D  z

  25. # T' Y) K* S0 O, d& t8 {! {
  26.     $Logo = './pic/logo.png';   9 d: R9 X. K+ F& Y, @
  27. $ `, y( [3 \! Q/ r) J
  28.     $Logo_re = './pic/test_logo.png';   / u/ H4 j8 M$ R
  29. 8 t. h. k0 D" `- L% V0 B
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   ; p( E8 I/ S- B

  31. 8 c. v$ O) Q; _6 D+ `3 u% J* C
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    ) j: ]9 b+ P# [8 T. `

  33. 3 {9 @% @' e, o  y& s. m3 C
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    6 l, N' T! Q( E* q) }. C

  35. 4 X; G! ^2 N0 a
  36.     $QR_height = imagesy($QR); //二维码图片高度, _! [: [* c- s3 l; D  k
  37. ! h% v0 v/ e# I7 f% z# `4 g2 T# l
  38.     $logo_width = imagesx($Logo); //logo图片宽度& i* v0 N. g( d4 _: U3 v& O

  39. ! b7 {9 x4 \( D5 I: G7 F- H
  40.     $logo_height = imagesy($Logo); //logo图片高度
    ' x  A  r3 |% v% L+ ^) X; ?' E
  41. 4 p! e# N7 m* @' ]
  42.     $logo_qr_width = $QR_width / 5;   / f* Q6 L4 O. L4 c; f6 a

  43. 6 j# I/ b* b6 A, w3 d( Z
  44.     $scale = $logo_width / $logo_qr_width;   4 P' b) E/ ?2 t; Z+ x7 A
  45. * e( A3 Z( E: O% P8 I
  46.     $logo_qr_height = $logo_height / $scale;   / \/ O/ m# L' S* [& m8 @

  47. . G! W* k: Q3 Y. j/ v6 s
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;: w) N  ]* J1 L
  49. 8 g" u) E- a9 Z/ J6 M
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    7 ^! _5 y1 n1 J. n/ [
  51. 5 x: R+ T! X' Q3 X% s' j& g# e
  52.     //输出图片
    ) M, N: U6 W  ~' F+ e/ P- B. D
  53. " f) E$ u  s2 I8 x$ u
  54.     imagepng($QR, $Logo_re);  g, M+ Q3 Y- p

  55. + U( K2 C) L: @# ]5 e9 O$ Z
  56. }; J2 N+ v  }1 ?7 G+ c

  57. : ?" Q/ Q, P/ j# w1 S7 b

  58. $ e$ n$ ~3 j2 S& E
复制代码
3、qrcode_vcard.php (生成电子签名)
: E$ l+ c- C9 v: T5 ~& q& f/ X7 S7 A9 K% Z" A" z3 w
vCard格式:https://zh.wikipedia.org/wiki/VCard  B# Y# ?  _6 s3 \

, r3 d% k  q8 }1 K0 C$ d; n; g
  1. + ~. u& u9 q. o# D, c+ Q
  2. * Created by PhpStorm.
    # U; |# x- Z! ?9 b' F
  3. 9 Z  {( X& q8 o( a( S* \
  4. * User: user
    6 Y( E/ d8 f  _/ Q$ ]# B
  5. 7 m# K% Q- `1 ^
  6. * Date: 2018/8/15
    7 l/ y- }3 Q) e7 @5 a2 Y" z6 B
  7. $ P1 P* z, H  i+ Y& d; ~
  8. * Time: 23:001 I  T$ D7 r' m) K) H* V/ y: [$ ?
  9. 8 ~" u2 J9 v6 F: Q3 F, L
  10. */require_once "./qrcode/phpqrcode.php";/**2 `5 _1 W) g, H

  11. 4 f8 O1 t, A1 z/ K3 v
  12. * 生成电子签名
    * t8 T$ g6 s4 ]* x- @3 w' A1 p( T7 n
  13. % C, _$ ?+ q1 a% W, ~9 P
  14. * PS;使用微信扫描二维码
    & s; z, m; \; j" O% O

  15. . S9 W/ e5 m4 {) c* ?
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    $ n$ z+ L" T) j/ D# ^
  17. ) I* ?8 ?2 g8 ]8 \: d  b7 S2 t  ?
  18. $content .= 'VERSION:2.1' . "\n";//当前版本) C* l7 h2 u; u: C- B  T7 d! Z
  19. ' s0 t1 M4 E( F* f* Y; K/ f
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名7 q, l6 L# V2 i( d/ h  W  V$ ?  z8 W( K

  21. - R& y4 r2 S2 R; T7 R+ `
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    2 W3 J0 ?/ Y' w

  23. 6 |7 x6 _# C' `) R# ~
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位+ X9 w! [% |. I

  25. & b% S6 F2 a  F2 \# p
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    5 e" f& E4 c4 c0 j7 \

  27. & T2 B' s" K$ c* h2 e
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址  D* ?8 |; V: s; w! z, ~. d& p0 X/ G1 G
  29. 1 _# b  P" L0 {( A& i) }. R, m
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)0 s; Q$ [8 l# E* b9 X5 e
  31. 6 g. K# q3 `0 J; d
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话2 v# K1 p8 I* O# I+ m5 l

  33. 2 h: {% q1 a" O+ a
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱  T$ v2 o3 e- Z0 s9 H
  35. ( G5 B9 Q' N. T7 d- C" s
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    . N2 v' E0 y( v% ?
  37. - v( l( I) C" _: g# y- b" b
  38. $content .= 'END:VCARD' . "\n";//结束标志2 z" L2 d6 U; ~' k
  39. 9 K2 K& _  ^7 s4 g6 ?; \& K
  40. QRcode::png($content);! z. P6 |( Z( i$ j2 |. z
  41. 6 S, z7 f  t0 \; |7 t; a

  42. ( m6 p2 }! s% U2 R
复制代码
1 J3 y# t1 x$ M- D) H: m
相关文章推荐:! o- \8 K) s0 I4 W
1.PHP生成微信二维码实例
8 a2 o0 p' j! {; c' W# m* |7 T2.php网址转换生成二维码
! W  G# W: x- ]9 T% \8 [7 D, m& f相关视频推荐:
9 u. {$ p+ s2 T% i1.独孤九贱(4)_PHP视频教程
# F4 ?' I: ?- }9 }! b$ ^: T二、JQUERY生成QR CODE3 q5 I2 J& k8 B
源码地址:https://github.com/jeromeetienne/jquery-qrcode
% A6 E. v( W9 p+ ]- T$ D. D. M( g7 S7 d
jquery_create.php2 {+ b4 F1 v9 q6 ?
& b3 Y$ X' F0 {. |( Y" V9 Z$ G
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
$ b2 C4 T* Y9 x3 T% K9 ?/ X* ]
三、PHP识别二维码
+ T& l5 a6 w: X# N0 {1、方法一# V& D% Q5 J/ k: u! s$ W  _" G
环境需求,安装如下扩展
" c. ^! w: `9 S. P9 I7 g- ImageMagick3 m7 j3 u" h% A8 c2 k
- zbar
6 X0 n2 ~* @* ]) I* p- php-zbarcode% ~2 A7 b& M+ Z2 p0 h- k4 h
( a- Y' ]- D* o9 U
2、方法二
$ |$ s8 s/ F9 Z5 q5 Q' `, V  r- ~, lPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以, T1 m) L6 D0 Y7 U
qrReader类:https://github.com/baagee/php_QrReader4 c5 Y- B9 ?" u# d" J/ z6 w8 @
6 t) B' |0 D( a7 Q& q
  1. 6 b) T; D1 d+ e: _0 P
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径( B* K- _/ Z4 b' `- ?; t# ]
  3. , I$ g: {) ]" ~& [
  4. $text = $qrcode->text(); //返回识别后的文本* s# N# K9 S% i0 D" Y

  5. 1 ~- o4 A; g5 f( U7 r7 k0 ]; L
  6. echo $text;9 y8 M5 S4 p; [( {4 ]$ y

  7. 6 W  B9 ^" E; d8 p

  8. - U5 ^/ I0 e$ O3 f; B
复制代码
( X8 c% z7 \' {* A1 o7 X
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
2 \/ [' v) f% c0 Q, c. c1 a8 f7 e4 p' _0 a! H( N1 B) M# J

  c  z( t7 q9 O
& M2 }0 x# x% {" k* M
; Z' ~5 _8 s9 z- \: I- F. p' A5 K1 e1 n: j
- X' M+ t+ U4 o
7 m. @% y5 f, M% y8 Q0 f
/ x" G3 s+ Y  s! R8 }3 D

6 C( m, w/ ?6 n6 {8 ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 00:49 , Processed in 0.130029 second(s), 25 queries .

Copyright © 2001-2024 Powered by cncml! X3.2. Theme By cncml!