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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8348|回复: 0

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

[复制链接]
发表于 2020-7-24 00:09:21 | 显示全部楼层 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
; G) K4 y2 H4 [0 b* Z! l---------------------------------------------------------------------------------------------------) J: l. @3 j) p' k/ I; `: V% a! u
二维码的分类. c% U" X/ J$ y8 \3 R( G' M2 G( L' _
线性堆叠式二维码
3 Q- o8 J# v/ ?0 v9 K6 F0 X5 ~" \/ V% B* O
矩阵式二维码! H) l' {9 A$ c, T4 I, |& o3 Q/ M

9 u" l6 D/ v* ?1 Z二维码的优缺点" h1 }" ]3 S0 e, {8 W- w% X3 k+ p# n
优点' j  O$ T4 ~$ m) O$ c- J  `5 C2 d1 _
信息容量大) t5 F' \/ v, Y4 R1 U' M

0 v  u& b" G0 l! O7 H; }/ R编码范围广
9 X% I1 X) {  F! ?0 G- U3 c" O2 `; c2 p, R' K8 ]8 r
容错能力强% _2 y- C& P1 D

) w: r5 I: J% P( `1 [+ i' K译码可靠性高
& J* K7 C5 }( W
9 H3 R! ^* k9 T1 }- n可引入加密措施
2 l- Y7 g0 G; F, y6 O
$ x) c* P# e, F' J8 j2 J) W成本低,易制作. l# c  o. T' p* I9 ^! b
! t! c8 B& \' f! W4 j( |) B
缺点: L! ~. g6 m. G& b
二维码技术成为手机病毒、钓鱼网站传播的新渠道
6 Q* t  Z# H4 x5 @1 b+ @$ P
5 g# U: R/ s+ [# z" s5 ^9 J信息泄密4 A# Q& E+ i6 m# O4 t
) p- f% ]0 r8 Q% T
目前流行的三大国际标准- m; a. L; V1 q- M5 U0 P$ ?2 N
PDF417:不支持中文, w$ Z! \/ G  @! J! |7 Y

* ~( k+ R! g7 x( r+ SDM:专利未公开,需支付专利费用. x% [' A$ u2 q8 y5 k/ ]0 a7 r0 ?
/ J7 }+ H; l# E$ s: e2 M; L
QR CODE:专利公开,支持中文! n+ P/ t7 |* C& \: M3 f

& V( i7 \( ?7 v4 @: Y4 DQR CODE 纠错能力
5 j# G  M2 R' {/ dL级:约可纠错7%的数据码字" d: e0 L/ w2 v9 j; q6 Y" {
" _! i$ C* u; h5 T- W% t2 [) H" c; C9 n
M级:约可纠错15%的数据码字
, ?3 {; E. |# L) [6 n: ~8 ~
9 k- b6 c9 Z2 Y8 h' r/ z( wQ级:约可纠错25%的数据码字
+ M" a; w# i, @
6 ^! R0 g* T3 @4 G, l( Y9 dH级:约可纠错30%的数据码字
0 [  I7 M( ?, j5 K! ~' C
  N9 _2 D( g" G6 a  k7 X前提条件
/ B( {5 _, B- V  v% N2 EGD库
% ~6 Q* f* P$ m/ m6 ~( {9 Z
& r: O7 h" D, M  F: {! w$ v' T一、PHP生成QR CODE
) Y# ]4 K/ B+ |6 v7 v, K0 y( o$ o官网:http://phpqrcode.sourceforge.net/: Y# v. j( h2 c1 s
+ c& f  F( d! w
下载源码:https://github.com/endroid/qr-code- e$ _' J- V+ M. P7 D& i
- W6 |: R2 l0 x: K( n
目录结构
' ~. A$ l* b7 X/ s% O  ~ 03130c7c8ed2925e6f0fa9bf23525edb_1573193604581540.png
# Y+ r$ k$ o; T4 M8 d! G' @! V- f+ s7 ^
1、qrcode_create.php
1 U; k9 [1 D# c4 R/ mps:生成普通二维码( l; o) i/ u3 H) N1 L' P

  1.   e& X: ^( P: d0 Q3 s; c. f1 O
  2. include_once "./qrcode/phpqrcode.php";/**% O) o1 g& D. v; G; H+ j/ }1 M

  3. 3 E8 W6 r0 J  x& x% `) I2 t
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
      f: D9 i  z/ h6 d& f+ d- w& [

  5. 0 k/ q1 v: `; g7 N- L% @! _
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    ' {! ?2 d* {2 B! @* ~9 T$ L
  7. + u  u2 r" ^- [& D& y, J
  8. */QRcode::png("abc");  Q* l# d0 D$ r  \$ ]( j0 g

  9. $ D6 d+ L# C$ q4 b% ]
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**  H# b, H; f/ T& q, t! w' _

  11. - |" B; `" D" A% q1 r
  12. * 生成文件到本地, U7 ~5 E8 ^- H3 s

  13. : W  L2 v  W! |
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    # t$ c# ~  s8 j& M6 {

  15. ' b; I/ a+ v7 c9 E/ [
  16. * PS:$saveandprint源码的p6参数做了修改! o! j: T+ Q/ @- u* q8 _8 W
  17. , d- a5 s, m3 r. J( }6 v+ o
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);( Y$ W$ X- N, m6 W% V9 X$ }
  19. 2 s6 |6 ^4 K) S: r/ r, Q4 }

  20. 0 f6 @8 f) ^: e4 r, k
复制代码
( V4 @, |0 h- Y/ D# D7 R
2、qrcode_logo.php6 A' w: n( ?3 n" _# q
ps:生成带Logo的二维码
  1. ' ?0 S5 }& U$ S- z/ @7 F1 a$ z
  2. /**
    - x! Q) g6 v) M; I$ x( M
  3. 6 A! K$ D+ D8 f( a2 g
  4. * Created by PhpStorm.4 ^+ i- n& G- d  Q0 S& i$ [2 B

  5. % F- {5 c0 `" J$ N, j$ W/ F: `
  6. * User: user
    ' R: c- U/ Y* J. b
  7. # {9 n( {9 c' u! @& T6 C- F
  8. * Date: 2018/8/16: `+ Q. p; h( F# u7 H4 G( W
  9. - a& M' l7 I4 o6 v/ x
  10. * Time: 10:43
    1 \, Z- t3 Z3 B% L2 v

  11. 9 A- q$ R' J0 e
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";' D% a6 |) H+ H6 h- X# G

  13. 5 _# j8 w# Y8 e( H  L
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    ) I: H. M- a5 M" m, g6 x, A
  15. 1 I; c) F& x, S7 F% g6 N7 N6 A
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是4 g: d3 n8 ^3 z" g
  17. 2 O8 I) |+ f+ Z! |. Y
  18. $margin = 2;//边距. h9 \* h4 `/ s. c  i

  19. , b* d4 r7 }0 I9 Y
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片1 H& W$ r& X# ?

  21. " l& x# F4 f  U! t  h
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   ) P, P. H( g# w, o- Y* p& U

  23. 0 l' x6 F6 }4 o2 Q* }5 |
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    3 V* w: o( i$ d1 [; Y1 U

  25. ! B3 A7 y6 _4 J, o
  26.     $Logo = './pic/logo.png';   
    4 O' {( |0 _. z1 s0 ^6 ~: `' @

  27. 3 p) l, ~9 c6 j" v$ M3 C$ @
  28.     $Logo_re = './pic/test_logo.png';   $ S8 W9 @2 n9 S
  29. - M4 G" o6 R" x0 p9 ?
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   5 I) f$ Y/ |* a9 F$ g8 d# N

  31. ( r  j$ Y) }3 r  K. T
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   5 S+ l9 E1 M/ ~) }9 j$ {5 Y
  33. 5 ?" s. T; O$ r9 k: y7 m( _! P
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    & ^6 v/ o+ b! C3 D8 b6 k! d1 T
  35. 5 _7 s$ X+ u2 v& |9 S" a; X
  36.     $QR_height = imagesy($QR); //二维码图片高度' G, q& u5 g/ B: _7 I

  37. 3 W( w' J9 l4 b" W3 g+ D( C
  38.     $logo_width = imagesx($Logo); //logo图片宽度5 ]3 d! E. \; I7 M9 Q4 h
  39. * f5 ~) H4 ^: E$ K
  40.     $logo_height = imagesy($Logo); //logo图片高度
    7 u6 c) [2 e$ R# r! B, |' j8 j

  41. ; g1 A! J% c0 k; I2 q1 n
  42.     $logo_qr_width = $QR_width / 5;   6 G0 `1 Y! }1 P9 e. M; ^7 E/ D0 A

  43. ( G7 M) b! W" V6 g7 [) y, L' U
  44.     $scale = $logo_width / $logo_qr_width;   0 ?7 m: e2 m' ~: r# y& t- U0 y5 k
  45. % T) m* w) G1 N* [- r: @
  46.     $logo_qr_height = $logo_height / $scale;   
    6 R- s; H" E) S- D; [

  47. 5 t2 s" c$ }: h1 Q$ `! s  {0 h# u& A
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;5 l' m: E" Z0 }' h

  49. 1 G5 D/ |; H& g" ?' w% E8 Q
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    ( o! F/ v4 x- ^2 _
  51. % i8 {9 j" L& h( P$ q7 R
  52.     //输出图片
    8 Q# s8 r# p& K0 I8 @9 l
  53. $ r) G0 m" R: T, R. M# N& {+ T
  54.     imagepng($QR, $Logo_re);9 ?3 F0 S/ ~1 b: V% b, c0 ^# A
  55. : W# N; y( P- l7 I& X2 |1 U# D
  56. }( V5 b# ?: L' u! ]6 b+ P

  57. ; L( ?; l3 e+ g" Y9 Q0 z+ _# {

  58. $ K& O2 {! T% |" l% \+ ]
复制代码
3、qrcode_vcard.php (生成电子签名)
/ g7 }- s# v6 Q
- V! I, t" b5 s! v$ dvCard格式:https://zh.wikipedia.org/wiki/VCard
  x( D( {7 ^: B
7 o2 U1 w  u" A/ }9 a
  1. * D1 M. \3 d; ^0 }' \$ j
  2. * Created by PhpStorm.+ Y1 E% }. Y. _- D

  3. 2 r. H0 b; N# S) y5 [+ w* @
  4. * User: user
    . q% h( C( z5 k$ r  O+ D

  5. ' W  W1 A2 g3 ^% @; D" {7 V% |2 T
  6. * Date: 2018/8/15
    ' Z* c& V8 m; \! o$ c0 y. x

  7. 2 _$ h) l! Q4 N# M" d* P
  8. * Time: 23:00
    1 W. @  @! V. m! t/ y$ y; t
  9. ) O' C7 T! w! _" H4 R9 o7 M
  10. */require_once "./qrcode/phpqrcode.php";/**9 x+ s* |  h/ y$ ?% v
  11. 6 R9 f: n3 r* \- T7 c# G6 G
  12. * 生成电子签名
    4 d9 |1 J, X$ H# ]( D$ l; c
  13. 3 Z4 O' G4 W. o- F/ U1 I
  14. * PS;使用微信扫描二维码
    ! N1 y% D7 ]( e

  15. # K( i0 J/ Y9 }
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志  M& M! U! K8 i2 E  P: s/ D* r( C* |

  17. : Z( u0 {- t6 u! m) ]
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    # Q1 |9 Z5 t+ {8 t  r

  19. " l, O( t. H  P1 p1 [5 ^3 y, e
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名: D+ C8 Q) N+ K* n7 ~: X
  21. # @; z9 B, e3 H3 q, Z! v- v, ]
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称6 R# S6 s6 x- A" e/ ~
  23. , O2 G. E! N  i0 ^/ K8 t- A
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位! c* g# x/ g5 |8 y0 u

  25. 0 H9 n' K5 M' t
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    ( l+ D* Y$ ^# X- y1 K3 V* ^
  27. 5 I, n, v! v# z
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址, R: V* a0 c$ @+ s6 Y4 I% T

  29. 0 u+ B# U1 e. ~1 F. ?. e% q* \: }
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    / l8 u9 b) b# H) Z6 ^
  31. ; V/ Q" h* ]) x/ k0 [* R
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    " ?/ c# n1 V& Y

  33.   v+ K9 @! b' `  K3 M
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    + A: G- ?9 Y2 i: S5 a3 ?' ]
  35. 1 d) m* K) I- N6 V: b/ ?5 w! v6 z5 G
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    % m- x& S' N3 u2 _2 c( @& d" G) n
  37. & r! K* f" `, o
  38. $content .= 'END:VCARD' . "\n";//结束标志
    9 ^2 ]' }7 \$ F- D

  39. ( I7 s) R2 f$ h# I6 [/ F/ G5 L" i( }
  40. QRcode::png($content);4 ~' a; U- J1 i8 S

  41. 9 l: S' K& d$ I" f

  42. * k( c! e2 z: R
复制代码
  @! ?% W' P7 Y
相关文章推荐:# b2 T* k1 d8 n7 a+ W
1.PHP生成微信二维码实例
! n8 k) W9 {" Z5 D2 x$ x2.php网址转换生成二维码
8 k2 z, B1 j6 H相关视频推荐:: l6 D2 c& c5 l+ r
1.独孤九贱(4)_PHP视频教程
+ b9 O  U! Z; M* \# M* J+ g4 c二、JQUERY生成QR CODE
6 X$ h& s% a8 G% h, S源码地址:https://github.com/jeromeetienne/jquery-qrcode
! Z! n  S& c5 a- t( l0 z) p4 f8 u
. H* _/ |  Z4 F$ u8 u0 _. bjquery_create.php
2 v( W' |+ }2 `6 b" T' i
* A' W( C5 R" n2 b/ j8 _$ L5 B) W
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

. M' F) i8 r( {" {6 L三、PHP识别二维码
4 c& u2 ~0 \+ O; a+ o' J! X1、方法一6 A# h: L& Y( y: o3 `+ `% T& D5 R. L
环境需求,安装如下扩展( t- @3 ?2 w2 W7 @
- ImageMagick4 d$ k& o  Q8 S/ G, t
- zbar: E6 Z+ {. F1 b8 d, _8 `' v  N
- php-zbarcode
% J% b9 g- S7 i3 {  }) F& W
& c4 H" i+ W; L8 J  C8 N2、方法二* A( J) E4 h% |8 R$ s. R4 o
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以7 j' A  q1 k2 z% o2 f- N
qrReader类:https://github.com/baagee/php_QrReader
; H$ d+ X7 w% s: ~3 N
. g5 e' U( y- \3 e" X% o: F
  1. + w5 v6 |5 h% k6 ~- Y
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    6 N  S8 y2 y% D0 `8 S1 S. G

  3. . ?& o8 H/ R' I* i* z# u
  4. $text = $qrcode->text(); //返回识别后的文本
    - B' Z- t) w' P1 j) u4 ]0 l

  5. ( [* m" I, x" e" N* C( r  q8 p
  6. echo $text;. d. Z$ H/ j  L% Q
  7. 4 S5 d! Q/ T0 T' c/ R5 v: \
  8. 3 ^5 Q; G, X7 j% J
复制代码

: h" e6 L) k' w- D( e4 @# B链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7* b9 ?! p! L' |% {! D* g" ^
8 ]5 M6 N* \9 ^! J9 c

5 R; S" k6 U+ O: I1 i4 o
  u$ b) s; ^. ^; e. f  [) I. M4 _  a0 d+ ?

# [: o5 k+ J0 L5 U6 N" d
" \1 j( q: {2 @8 [: F, k. Z& }/ v

( }$ Y* f' S: ^+ ?
9 S! X# ?  V( ~' t4 ?( e
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2023-9-30 08:04 , Processed in 0.146247 second(s), 25 queries .

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