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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
" T4 A! k' V6 J: }( t* U---------------------------------------------------------------------------------------------------
' L- ^5 d/ U: C" N二维码的分类
: |' O1 S9 x# G! Y  m& J线性堆叠式二维码/ U  d0 q8 c& f& O# I1 c
6 Y6 i- w  y: n3 g
矩阵式二维码/ U9 R7 \1 R5 T( H# K

1 h$ q8 |% ~  r1 l0 c9 u二维码的优缺点$ E4 Q/ U% o" E2 z$ b/ Q1 |* D% [  Q' J
优点
! f5 t" _8 g% O9 k信息容量大
6 E) _8 l3 u' k
" O- W2 I) g2 ^! l编码范围广
4 w" N* H7 E5 R* b, r: y4 `
. u9 q' U( s4 |+ a( I容错能力强
, m8 P4 v' m* s+ m$ r: k2 z+ E
, |5 ]: U- n% F; e3 ^译码可靠性高
5 ]* u* }" @5 @/ @9 `( R* f! I3 |% y, |* \. C; K
可引入加密措施
/ a$ N) a% d$ b' N' h/ n* ]' |: y1 r1 _8 H
成本低,易制作1 {& v* ?; w5 H4 r8 H6 ?
$ w. u* I# l' ?: S( p
缺点
& @  j3 D; k; a0 }0 |& u) ~二维码技术成为手机病毒、钓鱼网站传播的新渠道1 U' e  s8 e( |7 x# I2 d) {! H  |2 Y4 g

4 m! e  E9 Y* V7 d) t" v; r信息泄密
# l2 o- g% F! c/ J6 s" }) b
- \$ H( `& N8 a' c: J, j目前流行的三大国际标准- p4 o% F1 F% r# C% z
PDF417:不支持中文& v- J+ s' u9 g8 Z, I$ k
$ ^: j0 e2 ?' b/ F& V" b5 J1 f& ?
DM:专利未公开,需支付专利费用
$ j" Y$ R, C0 ~# D# u& j2 f. p8 T+ L8 U! N! n# P+ c
QR CODE:专利公开,支持中文
( D. Q# X9 R$ @( M- J& i1 W$ o2 P7 `' G
QR CODE 纠错能力4 d+ u& d0 U# O/ A" ^
L级:约可纠错7%的数据码字! ^" o  X' B/ A2 e
! ]7 w8 w4 x1 h& f' {  n3 h6 \0 y
M级:约可纠错15%的数据码字
8 R4 b* y% q5 f3 l* J) b
( E3 h! [% o! M% p. _Q级:约可纠错25%的数据码字! X1 z  {4 @, l; }. R' U% W

) y+ V. N" f8 h/ }& A2 TH级:约可纠错30%的数据码字
9 y+ B) h! ~8 O1 u9 `
0 V3 t$ M' \$ r) q7 ]; C4 e前提条件& G9 p2 B. W9 _: p. @
GD库  e1 M! J) e: V& I. L
# t& R4 w2 o# D: {+ Y" `' W! x
一、PHP生成QR CODE
) a+ Q+ J! A- Y4 h4 H, P4 q: y官网:http://phpqrcode.sourceforge.net/6 Z6 r3 ~1 S" K" F9 ]# T2 K7 l
' L! Z# L3 F3 C$ i
下载源码:https://github.com/endroid/qr-code2 ~+ N! \6 A8 {" Z
3 ?0 t1 ^6 h$ M7 D$ {
目录结构
2 C3 t( l! l" O: a8 x
) K9 a# B8 l) m9 D, z/ s4 v% r- @) u9 V1 D/ Q- g0 C0 |
1、qrcode_create.php
% I% X! S2 a! B* \& B5 I! aps:生成普通二维码/ m# H: ]+ f! l% I
  1. + _9 ?9 A5 l% q% {+ y0 d
  2. include_once "./qrcode/phpqrcode.php";/**
    ! v) {2 W: Q# l2 Q+ Z( f
  3. / E4 s/ O, m* Q+ z
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    & I0 N# n" @! `1 R* ]* y/ M* E

  5. - e/ b! ]6 q6 i6 R3 {
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    % B3 \6 K; T9 B0 g

  7. $ Q( p5 ]' T" w/ j7 y% K
  8. */QRcode::png("abc");2 D! o% l* ^+ }" U9 _  D

  9. ' N( v) \; @9 w; W$ ~
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**0 H1 n- a; P+ L7 T5 n; w! _

  11. ) z: ~* n1 R) Z5 T3 H8 ~  F
  12. * 生成文件到本地
    9 P! }8 u8 _/ l. g# u
  13. 3 R4 D  t, C! P7 [
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印), T+ h$ F0 G+ q. B% w

  15. 1 B4 v; @$ |$ k+ G
  16. * PS:$saveandprint源码的p6参数做了修改3 D+ `' ]) ^, @

  17. " s- w5 J) f' e8 ], I) u
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    ; O' P2 t( G9 F& C/ E

  19. ; z4 s7 ^4 O) Q5 I1 a* a  [

  20. 7 \( C% r/ f: E* a: I
复制代码
+ Y" l1 S% @# O8 `  `+ @) f) C8 Q( R
2、qrcode_logo.php
; Y( W- I) `6 P" ]- ~; z; Pps:生成带Logo的二维码

  1.   P1 J: L: `$ h$ S
  2. /**
    & K, m9 z& ~- j3 ~

  3. ; I$ o2 L- O4 }  ~1 d
  4. * Created by PhpStorm.
    + x- o; A3 \+ M/ }4 G

  5. 4 I2 \0 M/ w1 i6 ?2 G
  6. * User: user
    , l8 C% q# }& i) c+ Q

  7. * \2 L6 x2 K# R. b
  8. * Date: 2018/8/16
    * h# k4 w2 p9 S
  9. : v8 Z, v' s# x  \) M8 G
  10. * Time: 10:43' x, o! i# }2 v/ W: o  R
  11. - s% F: r- w5 M
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    ( [& B' q. u9 e7 R3 [: H

  13.   v% l- I! i3 W  b  M2 Y1 [
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称$ c  o8 x% u7 k$ r

  15. + M) |  d0 r4 j+ o$ B
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    # D9 G& \  s4 S. \0 A5 |  V8 E# W
  17. 0 v  z! P" P; F* @
  18. $margin = 2;//边距
      ]5 [' k) ~& G
  19.   F, Z% ~# @+ a, }8 W
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片- M/ R8 l6 S/ L2 d* S
  21. ! O) T0 G7 s6 g& Y
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   ! |" F( L+ ^- @- t8 Z8 d

  23. 6 g- R  s! |: l
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    / e5 ]0 J7 i( X' F

  25. 2 F: X: p) g! C+ [. o; u% H& C- |7 }
  26.     $Logo = './pic/logo.png';   
    2 I& d; w5 o4 t+ A# k

  27. 0 |: X) G/ c7 l2 t
  28.     $Logo_re = './pic/test_logo.png';   
    2 H( C7 R2 a1 ]5 u% p, R( R

  29. 6 x8 @3 d. I1 q$ Y
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    2 |4 g, _9 z0 Y9 [. t+ g' `+ P0 x
  31. ) }( M) u' x& T
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    2 J$ H: O4 {4 Q7 {: l9 s3 ~
  33. $ {5 q4 p# }0 r/ y4 D
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    7 R( B! {2 M7 o, _6 V8 l

  35. # U# N0 K+ p% z: v8 P% I- r
  36.     $QR_height = imagesy($QR); //二维码图片高度
    5 U3 |$ ]6 t4 o$ n* ?0 Y' o

  37. 0 `4 |  S- J9 q- i
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    ; v$ ?& Y: n5 b3 {  O( ~( @

  39. & @" X7 R& w7 q8 u2 x% |: K
  40.     $logo_height = imagesy($Logo); //logo图片高度/ f7 O' V0 J1 g- g9 |2 E9 E$ n2 a/ n

  41. 7 z& K) b& f8 `( D6 q+ K3 E
  42.     $logo_qr_width = $QR_width / 5;   0 |7 }& R# u) }* |: Q3 i5 d! T* l  h8 V  d
  43. 7 a! Q" Y0 j6 S& ^, z
  44.     $scale = $logo_width / $logo_qr_width;   $ ?9 A; a5 h$ M3 Q2 I! u

  45. 2 c! @9 s' Z. u- P
  46.     $logo_qr_height = $logo_height / $scale;   
    5 G  \2 B4 {. e, ~
  47.   V! N- c2 h4 [2 B2 f
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    $ X; \0 g: ~8 o# W

  49. $ v6 M( e4 }5 n7 g, h
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    8 H* Q7 D4 G3 ~6 X
  51. 8 d( a( I7 r" P5 Y  L7 F! P+ Q& I/ \
  52.     //输出图片0 }* j& K3 f8 M

  53. + i# ~3 h6 G' D% c6 B3 o
  54.     imagepng($QR, $Logo_re);: x) s6 k$ ?0 L0 m0 E0 D2 }

  55. : ^; o, R1 R7 }9 ~
  56. }. z% W' ^! a; @& {# w

  57. $ B/ U# |7 x: X, h* I3 D
  58. # Z$ V: h# L8 x& o) d9 Y5 u
复制代码
3、qrcode_vcard.php (生成电子签名); H, v3 j! I  O4 d" J, R2 E: F

$ x' z# ]+ k0 c9 U* SvCard格式:https://zh.wikipedia.org/wiki/VCard6 C2 V. H, o4 z; p1 g: h
- z% Y2 N7 O) d
  1. ' N! \, j1 \1 M  M( D' U  j
  2. * Created by PhpStorm.! {2 [, q' o7 W  v
  3. % s) r* X" |0 f" C
  4. * User: user% K+ @  v9 ^$ p% Z+ @
  5. / D# f+ F8 X$ v3 f3 V/ _
  6. * Date: 2018/8/157 ~. O% E  ?! A) \! Y
  7. ! p  I4 n  l" E9 D9 M9 a
  8. * Time: 23:006 D) _6 J/ R' N5 i+ v  [

  9. , k, n0 M7 z, ]# R. D4 n3 `2 n  Z
  10. */require_once "./qrcode/phpqrcode.php";/**! X, x$ |# j" l  y3 R5 X
  11.   M0 r0 Z# @4 ^& v% y. Z
  12. * 生成电子签名
    $ ]4 \& t, U/ _" J0 B

  13. $ j" s9 f  A0 r4 x" R# r2 i
  14. * PS;使用微信扫描二维码
    , A! H8 O/ L1 {" ~% h1 C

  15. : x, r. c3 g+ a" s, G% z' m! t
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志0 Z3 D% j, C8 o

  17. 7 W6 s9 B5 p+ R3 I. ~  Q
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    " l5 N; c. d8 M9 f9 ~8 }

  19. 2 |* ]$ N- o0 G" H) m/ k+ o
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    ! |8 @2 }: \# i
  21. 9 I  A* P3 {# X! p9 K, \
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    ! [9 O) Z. k6 @* l5 B/ S6 u

  23. ; U0 F9 O8 h5 \' b4 `; I6 Y
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位) F% V# p& y5 v9 P: Z

  25. ) h* z. @- {* Z! r( k
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话9 x* R9 y* u9 K9 e3 G

  27. # }. f% X# m- r. a
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址& c; K5 M0 h# q) D: G9 @
  29. 6 }3 A" M& ^! }' `1 j
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家); o. t, D$ i/ U: [8 U: }

  31. & ~! p# ]+ {7 v" J4 U* ]4 V
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    : f; m3 O# P$ V* X2 T
  33. ; v* l2 h* q  v8 y  M1 S( `
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    ) @0 R: e6 i$ O. U4 }/ T* ^8 Q

  35. 5 R& Y0 [2 u, T  U
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页3 r4 Y' v% H; V# s4 |& t. l

  37. " D7 ?+ y1 x4 V% x$ V
  38. $content .= 'END:VCARD' . "\n";//结束标志
    - u: b  f+ R7 W% h- \2 |: \! C! `

  39. $ f' ~9 Q' C9 K- N
  40. QRcode::png($content);; M8 g, f9 m* i" i7 w* D
  41. ; O1 L5 n8 a/ w, F
  42. " K- O3 P( e0 C5 k. }# j
复制代码

7 |, [) c+ \% A! a( E( x相关文章推荐:! X7 \  j4 X; \6 S4 C* b
1.PHP生成微信二维码实例
1 w+ Z8 Z5 L$ a5 S8 m+ S2.php网址转换生成二维码
4 K: x( Y  J# B+ K7 f相关视频推荐:* E8 \! }" T7 W1 d/ T6 P) P
1.独孤九贱(4)_PHP视频教程6 ]' G  _# G3 M2 O* `) `
二、JQUERY生成QR CODE! h" n; [& ~& E
源码地址:https://github.com/jeromeetienne/jquery-qrcode+ _" U3 s& |7 V5 u; n
* [9 {4 Z/ J& @7 L& q+ j! B
jquery_create.php
3 t( b# W2 Z5 |3 N9 {" G* |0 g2 ^+ ~+ P; X
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

& p) o2 D# ]4 r0 |$ z* \0 N1 u8 Z三、PHP识别二维码( E! V: w/ \% r+ l
1、方法一
" b+ `% g' b/ ^) e$ z" l环境需求,安装如下扩展
3 B/ d" B3 Z* ~+ ]6 ^- ImageMagick
* |: C; e) ~: ?+ }% j/ I- zbar
4 `6 t, [3 m" G' U7 c- php-zbarcode: A$ O( z8 K' s1 i) {

' R( D2 [" S% E5 z6 Q- t2、方法二
' {8 c4 a. d- A# aPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
0 x2 k- w7 H# F) yqrReader类:https://github.com/baagee/php_QrReader% d' c+ G4 j( r& j) ]# s
; z1 _7 L1 i" @

  1. 6 m: a) q! n; d  t
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    ' X$ ?, K3 |, P& [0 n" A2 N- a4 S% j, U
  3. , l  f% e  L  Q  Z2 p$ N
  4. $text = $qrcode->text(); //返回识别后的文本% u6 e( X: B! s+ j5 D* O9 W: ^: Y% _& d
  5. 3 D" S/ [  q8 r2 S
  6. echo $text;
    6 V& I4 Z, _! I$ p4 u
  7. 6 N0 t" ]( u9 u" @+ _
  8. 7 ~  q' ?+ ?' L4 e1 u
复制代码

* a3 m1 o" i  }. q# {( l3 w链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
: q; I# I  b8 o# I: @
  U" v4 d5 F+ u' c/ @/ O: f6 O* O  Z% {  a5 w' B

5 }* w3 ]/ I9 i0 U, U3 ?! i" K! ?0 Q; G# z; d; l) |; d
/ Y9 f0 d# {9 L/ ?) R, F

4 u, H2 w6 Z" F# F
, A/ C" b9 ]% C2 R% S) V9 Y9 X
& k- G+ X% a5 [) t& c
7 g4 M' z/ O/ m9 \( C! p2 A# n. X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-8 00:22 , Processed in 0.122271 second(s), 23 queries .

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