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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

cncml手绘网 门户 查看主题

PHP如何实现二维码的生成以及识别(代码) ------------------...

发布者: admin | 发布时间: 2020-7-24 00:09| 查看数: 13171| 评论数: 0|帖子模式

本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。( t; f5 x% ?: r+ Z8 y
---------------------------------------------------------------------------------------------------- v- S9 N' s- n" {) t" C4 L$ h# @
二维码的分类
5 H4 {( V4 e/ w; Q线性堆叠式二维码
; c9 O  c8 L; U4 [+ W8 a
# W( Q. {( E* _. n+ k" J矩阵式二维码
7 h- m* [6 H) [' M" S3 \, e6 R) ]' C1 {6 j1 \0 v7 X
二维码的优缺点
0 L2 I3 N; H; P# m; B1 o优点
$ a! i: O) I4 d- _: W6 a信息容量大" [7 K& |0 j  [8 t: t: D  _; Y

0 Q3 }  j/ [3 N4 [+ l编码范围广( D/ X! G5 \: I4 Z! s  g3 y

9 C& A4 H, I& d% E2 X, E( h容错能力强
  f' F' @- s5 D2 ~. J9 {& T3 C- G& J" b
译码可靠性高
) G+ \+ P6 L$ ]- @
  y+ }- U5 V2 n/ R# L可引入加密措施* I0 X& Z: |! C# n7 s# Z# e

" p8 B' {2 p. i) M$ K& N+ _成本低,易制作0 a) ?; M$ \! d, a  D
% G/ W* p! O# c( I
缺点
! h; _+ `9 A* {二维码技术成为手机病毒、钓鱼网站传播的新渠道! I+ {9 e3 r$ A9 k  t
( V7 d+ Z/ \7 _; K' ~7 @
信息泄密
5 J5 j/ J& P! A8 z+ f
* X$ d! s9 ~& Y/ a目前流行的三大国际标准% ^  [# a4 O% g
PDF417:不支持中文' i: s3 L8 V4 Q6 D( [
0 e7 O1 @1 v! H; I  }. p$ s
DM:专利未公开,需支付专利费用6 A% q* L$ l! x8 ^6 y4 l
; f/ v3 P! K# v2 }( |: j
QR CODE:专利公开,支持中文
1 j* y6 D  q9 U$ F) F7 F3 }+ i3 U4 T. j7 i! `6 c
QR CODE 纠错能力
4 M- C" Q# H- O- J$ qL级:约可纠错7%的数据码字
( b1 I2 p3 ~  V) E' {/ C# _: f* s6 z  G$ \% `! _
M级:约可纠错15%的数据码字1 t5 Y+ N' L; a

# ]! w: c+ G* }% Q8 m3 o/ B, vQ级:约可纠错25%的数据码字
2 O7 u$ H3 s4 v# d0 H* @1 A# R/ [! S: Z4 ~4 V
H级:约可纠错30%的数据码字; K1 t9 U5 m+ q/ X5 v" f5 C

+ p0 V3 x% V* P8 s6 z前提条件
# ~3 K6 p2 A+ T- o: JGD库" j! y1 h) }" f+ z/ Z% A. n" `
" R8 R9 d0 h6 J6 {" o1 \% s4 @" ^" [
一、PHP生成QR CODE$ u% ^/ B2 W# J2 E( B( ?
官网:http://phpqrcode.sourceforge.net/
8 B  X  @( Q+ U
- V! t" T8 g. L  J( q: ?' \下载源码:https://github.com/endroid/qr-code
. A  s/ i8 z  N) D: m3 j% V+ F+ Q9 @8 M, y7 I
目录结构. q' x* ]# O7 }% t/ `
03130c7c8ed2925e6f0fa9bf23525edb_1573193604581540.png
5 Q( {! ^. I# A+ k9 Z3 y
1 ~' d5 i& J7 q5 S1、qrcode_create.php
5 Y  M+ D4 v& f0 s) ]& v7 Ips:生成普通二维码5 B0 @# J8 w0 i( R- P, s3 h

  1. 9 Y' t! D. I. V% {8 }* O! K
  2. include_once "./qrcode/phpqrcode.php";/**
    8 V9 d. Q! n9 L* z0 [% O. I% [
  3. ! g+ y" M9 W, U+ o, ]
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    3 B- Z' V8 t/ ]

  5. ; [& [4 `. N9 n8 d3 @. w' V7 s
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    + L& D: f/ D, m+ u% L* g" N# m% v  l
  7.   z* S, ?9 J4 h
  8. */QRcode::png("abc");
    # _, x9 ~2 ^5 _5 N

  9. : f3 Z' G% C$ ]! Y; N
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**0 X# X$ @8 I; @# x
  11.   ?- o; }, r  n# a
  12. * 生成文件到本地5 {0 u7 j$ }9 C" R8 Z$ v! D

  13. ! t6 a& e* B) Y+ P& H# E. `! b% E
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    0 G  \" b; N& j3 y. Y
  15. 7 B2 F6 J" X  X- [
  16. * PS:$saveandprint源码的p6参数做了修改
      D6 l/ }% l  ^* a
  17. ; A# ^9 L  P# u
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    ( X$ t& G' l  l6 U& w

  19. $ a" t" Q& G# R5 Z" s- M

  20. ! k$ p' m3 T4 I: X7 Z
复制代码
+ e0 b8 W* Q. h3 u& _4 |
2、qrcode_logo.php6 T4 ^0 e( D  i) P
ps:生成带Logo的二维码

  1. 9 a, h' G8 N8 X- Q/ H3 H# u9 [
  2. /**
    1 {: X5 N% T  L

  3. ; o' h' J$ U5 E+ n. _
  4. * Created by PhpStorm.5 r$ D4 [. a/ o& y7 P- H
  5. 9 ?0 x; Y# v( i- B
  6. * User: user
    & H9 |+ r$ `; ?

  7. ' H& }" k- l5 h2 a, F- C" i
  8. * Date: 2018/8/16
    2 x6 D* r3 F1 G! b' o/ E! ]
  9. 6 [# D2 w; J$ f, U
  10. * Time: 10:43: ]* I; X# o4 `' V

  11. ! n8 B* i& w5 B- D( A
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    $ `7 _, t- b' s, q, H! u6 Z9 f

  13. * n- Y$ W1 a8 w) c% M: o
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    7 q( V3 k' Q) ]9 m1 l& f6 D5 Y3 _

  15. 1 Q/ f- \' e+ C1 d
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是# N# P' Y6 g6 ]; r- ]/ b! a, j

  17. ; u) T; m+ ]2 P
  18. $margin = 2;//边距
    3 ^& _5 j' _% H* Z
  19. / l6 K$ _. \! C% L, ]
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片% K" }" q9 O6 [& ]
  21. 0 B7 |: c% y/ k! G
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
      P) w: N( l) p- V0 r+ S; _

  23. 8 n( ]7 ~* Y& J: q0 f* h5 j
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    & W8 Z# C: Z1 B
  25. * G5 V' z" J1 S3 x; V
  26.     $Logo = './pic/logo.png';   & a% O9 b( X3 b3 q. j5 K& x

  27. 4 L: \, i6 H+ O- z# d0 W
  28.     $Logo_re = './pic/test_logo.png';   
      E) \6 C" Q# H! V  p
  29. ( n+ g) [( C/ k4 D& e
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    / s' B$ X% N1 _( t" Y
  31. 7 p! \# ^. M3 x2 x4 e  n6 q
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   8 {5 `1 H5 Q& [3 p: R9 Z
  33. ; @- U, n; d% I& _1 A! g
  34.     $QR_width = imagesx($QR); //二维码图片宽度0 Q4 j+ e1 m# c

  35. & u; j% M& a' `7 Z$ y' `
  36.     $QR_height = imagesy($QR); //二维码图片高度
    / d: u7 l$ H$ w/ Z% S' G- f

  37. * i: `6 {' f+ M
  38.     $logo_width = imagesx($Logo); //logo图片宽度$ _: m' M! O1 j- D
  39. 0 A# a: [- [( @; z' E
  40.     $logo_height = imagesy($Logo); //logo图片高度
    * }" D0 Q3 m1 @/ L, I& _
  41. 2 `, R6 ^8 T  D4 m8 X: J" M! H! w
  42.     $logo_qr_width = $QR_width / 5;   
    2 s( R$ j* o& w& o

  43. 0 i# o4 `* R: _/ P# f* s( h% P
  44.     $scale = $logo_width / $logo_qr_width;   
    9 L# M; n" h( i
  45. 7 F% o0 d) b6 H3 E1 G- p
  46.     $logo_qr_height = $logo_height / $scale;   
    $ U3 E5 {- ?7 f, n% ]

  47. / a/ S% P, j8 B0 i: w0 T7 K" U
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;6 i! R* U, T$ ~# i
  49. 1 D  I* e7 }5 u7 O2 P
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    - k  U/ u& N# k+ Y/ a' w+ `3 H

  51. 3 N. n1 T$ |( N" h6 w5 d9 ~0 H
  52.     //输出图片
    # \& N: ?1 z, H+ A  J0 N' C

  53. 0 ~; i% g, U  R/ e
  54.     imagepng($QR, $Logo_re);6 u' I4 K+ h" E9 O7 `6 B
  55. ) Z# a  r  ]5 {' X9 N6 o
  56. }
    # M) U9 @6 n* x1 U! G, j) u

  57. 1 I' V+ E8 ]1 t# |
  58. - M. T5 |0 J# I$ W: C1 s
复制代码
3、qrcode_vcard.php (生成电子签名)
. y1 s& Q  \' ?) {
) ~* J" P/ U  P/ x8 c9 yvCard格式:https://zh.wikipedia.org/wiki/VCard
8 S# K, l! A# D1 J0 w2 n
8 S6 C% ~* M& d
  1. & y0 ~6 `: |" [2 `' l7 G5 b' b
  2. * Created by PhpStorm.
    " O$ V5 i+ J) A/ C/ v
  3. 4 X* ]* S' Y9 j3 d" V) F! P. ]. L
  4. * User: user
    7 `; `% }1 j9 z5 q! o4 t( `

  5. 7 g' v0 G. d' T$ B2 s! i' @
  6. * Date: 2018/8/15
      Z% `) }% H& k" Z' k
  7. ; m6 u3 H; r% J: i- t5 F
  8. * Time: 23:00
    5 r' Q' K" p' j1 E
  9. ) D0 l& e* Y# F& c+ Z1 l, g
  10. */require_once "./qrcode/phpqrcode.php";/**
    5 q. a: _+ K) L6 B: k

  11. # u" j: c& i: F& S5 }* \
  12. * 生成电子签名
    ' l" ~: i% J0 S
  13. ( [1 O# j$ t" f+ j- B
  14. * PS;使用微信扫描二维码& r) C0 }2 t8 r
  15. # V, W+ U$ F- Q3 m9 A; {
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志! ~  Y% l) m4 U6 T1 k/ I' `1 l6 F

  17. , g' z' O. Z, x! @; y- b/ U$ G( @7 c
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    & ~* I9 {8 j8 k: H% m

  19. & b: p2 B7 B$ T# t5 ?. q& m4 b
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    , A8 {  k4 ~" j+ e( m" L3 z- a

  21. . ^/ B( I: e/ p* y, ^4 l
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称( d* E$ O0 b# t- _9 ~

  23. " D( w7 K& |4 c2 L
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    ! M! l; I2 K+ y7 @: |. e8 V

  25. ' |/ K: @/ A; b6 T. j; i8 G, U
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    1 }* w' [- X! V, x; z2 H" c8 E. ^
  27. $ M3 L8 j+ X' K! C2 E
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    5 B- \* h& J/ W. w$ H

  29. 7 L% ^5 O* O! ^" H
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家), n  u. \  A, t3 x( {$ m" g

  31. ! W8 Z8 N- ~& N0 _/ }
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    & r6 [" n- k& ?
  33. 8 ^+ `2 I: }$ L# d
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱) \, J% s' {( A+ N2 l( b
  35. / ~" U# ^0 S! I# F3 y3 ~% v; i& g
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    8 u# o! `  v$ D) r6 l! `

  37.   O3 `% V( m) S+ p/ e
  38. $content .= 'END:VCARD' . "\n";//结束标志
    ( m+ |& c4 v1 y6 q4 C! w

  39. 6 n- H: k- I7 q
  40. QRcode::png($content);
    9 O. s6 u% G" ^# y6 k# P
  41. ) O/ _$ f) a: Q' o8 n

  42. # ?& r7 w5 n* }5 |
复制代码

# N4 G9 K" B) b相关文章推荐:) b- D' t: c, u8 \, l6 n
1.PHP生成微信二维码实例" K+ k; ^& ]  k) W0 {  [6 h
2.php网址转换生成二维码
" ~% A/ K% W/ o! p& n( z2 d# W& L相关视频推荐:
7 H5 T  n. z7 `1.独孤九贱(4)_PHP视频教程
( B! b  Z+ [/ ^# g# o( W; |) ^二、JQUERY生成QR CODE
& C+ c5 m+ A6 e& [源码地址:https://github.com/jeromeetienne/jquery-qrcode* J+ ]/ M$ _, s. W! e

3 R" n7 M) u* q( f: `3 O, @) [jquery_create.php1 d9 `5 \" V9 ^0 h* b0 D
$ P- k5 k% f! Z1 c" o9 S% E- f, v+ R
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

. c0 c# z. h+ t1 c0 s1 e三、PHP识别二维码
- a( [; R6 l; n  N: J" W& @1、方法一
. M& I/ \2 w+ q) T( F( L( \$ L2 Q环境需求,安装如下扩展+ I7 }2 n# M% [/ w/ ^7 X- x0 d: e+ a
- ImageMagick
' Y# W* a0 }. I$ g8 x5 ^, A- zbar
; m4 ^6 i0 |  K- php-zbarcode
5 e! c+ a- F; ]3 e5 e
% K) b3 }  A1 K% i- l2、方法二
2 Q% m( K; L7 H: G2 Q- J7 }7 o) c" YPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以7 \# y9 m+ T( T. o
qrReader类:https://github.com/baagee/php_QrReader
- m: D, |% ?# z/ T9 M$ h7 f2 w! O8 B. \$ N( H# C( [9 [# E

  1. 9 t6 J) \4 a( ~# U9 n9 }- B
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    2 w( f: ]' ^$ c$ P  i4 e

  3. % ~  C) R4 m0 {% M& Q
  4. $text = $qrcode->text(); //返回识别后的文本# u5 G8 G8 [4 P

  5. % y6 r  l: L, @5 U7 X6 l
  6. echo $text;
    6 i2 d4 {! T7 {/ l; T9 q# Y

  7. $ D* g, _1 C9 P
  8. # e- c5 m0 z0 b* K- }
复制代码

- f% r, m0 l' B+ s  X3 p% r链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
7 c- Q! {5 ]7 y1 Y9 ?) X+ N4 u
! a* S' H* K5 w& C( E  _2 v/ q. m) H$ r1 H% N: h* B! r

* k8 v4 ?2 \8 W2 K" Q6 E/ ^0 x8 i0 {, @7 m; _* K
/ _1 _/ l- [# T: v: x. C1 O" P# S! g

4 l9 h1 X0 N. q9 c  u+ z( b/ ^0 {, k* {! X$ J. `# h
2 f1 r2 h/ H% T( m. @4 H

7 m& w7 A8 g8 B) C  k

最新评论

GMT+8, 2025-1-13 05:28 , Processed in 0.104181 second(s), 23 queries .

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