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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

cncml手绘网 门户 查看主题

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

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

本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。) A% l+ B# G  w
---------------------------------------------------------------------------------------------------- u( J' p- O9 b  K; O, A
二维码的分类  e7 U8 [1 \8 b; @" l, a) \
线性堆叠式二维码* t: S+ j0 R% ?6 ^& B

0 N8 Y- K7 S0 ^' R) H% ]4 e2 N矩阵式二维码2 I; I8 s* H# a  ~# d' w

7 w3 p0 }( H: \+ t$ `  t# [: {二维码的优缺点
; U5 s' l8 ]) H* W8 r; \! X& B3 S  f优点
/ G9 ~! c: y) w( y信息容量大) K0 E# \8 f  n/ E

8 l' i4 d9 z$ U  q2 |; }3 Z编码范围广
' t8 [' V  I; ^% x7 O. x  o! ~2 m
容错能力强- m3 n' N0 h; @4 ?" V5 W8 j( K+ X
  e: S& [" }5 y. H4 l
译码可靠性高
6 u1 @7 h4 T" q: i+ L( P7 b3 z8 ^+ A8 m$ f- T) f# n
可引入加密措施
/ V8 x1 ]! m/ }3 `
$ q) y0 m% g, \; ~, K- k% t9 C成本低,易制作
9 a5 M4 K3 N# i' r+ Y! T! a8 d9 T& g% t- J) U& C
缺点
: h6 s- c' C8 _二维码技术成为手机病毒、钓鱼网站传播的新渠道
' K4 F5 g5 |& t! N0 v" e- I
) }1 J3 p5 f0 ^1 l信息泄密1 M# ]% a5 k$ a1 }9 x- c7 H' Q
5 R7 c2 |; l, ?9 Z
目前流行的三大国际标准
+ A" T* K5 }1 b# G+ g, M4 X$ U: sPDF417:不支持中文5 t* ~: \9 R4 I1 l! s4 J
; q1 ]$ ^* Y: a0 l
DM:专利未公开,需支付专利费用
3 f7 J' `: W5 a. n) E, ]" x  w4 G; a, r5 c
QR CODE:专利公开,支持中文8 A5 @& U) Q3 v( Z# `; ^2 L. `

- r; u4 j7 j8 P+ |$ RQR CODE 纠错能力6 W. U2 v: a* L; |- q9 f3 [
L级:约可纠错7%的数据码字
, x# W$ \7 Y4 z4 n1 l3 G  ?+ U: r9 C+ _8 R4 `" b! k" E' X
M级:约可纠错15%的数据码字. J( |: a8 ~6 C* b

2 e! I8 Y3 f) o& z! d5 V* e. NQ级:约可纠错25%的数据码字" u* U6 t7 c' b; S6 r: z

, f1 d, v. d+ pH级:约可纠错30%的数据码字
5 q5 q1 ^' r: F0 s( q3 K( `6 u. p8 ]) I
前提条件* L1 w; g, r0 K2 M( w& k
GD库1 e2 a0 v0 g9 B
$ s% `4 `# f: s, \6 B1 Y3 D
一、PHP生成QR CODE- {7 s7 F7 Q# g, P9 f0 i
官网:http://phpqrcode.sourceforge.net/& z: v' t. Y2 `9 C" c+ a

6 G3 e9 d( r3 K. _! D; S+ t下载源码:https://github.com/endroid/qr-code+ K2 \# B" M- F9 g% `4 \) c
! `+ v9 d& Q; Q1 n, ]
目录结构, _1 ?. E$ n) u8 B! p

" c5 `9 V" A8 L4 H, d+ f; K
- H2 L3 v9 X( }* v: U/ W; Z3 q" k1、qrcode_create.php
6 B  v2 c& z- _/ N- c4 _ps:生成普通二维码9 i* L9 o- g* T& w1 l1 a6 @) }
  1. 0 {: ?7 [8 v7 [
  2. include_once "./qrcode/phpqrcode.php";/**
    . k1 a( A9 k7 p1 k  C
  3. ; j' S/ }/ K6 u- g
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径3 D) ^  `: I& M1 T

  5. * ~) K( s" i  f& L
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    7 Z& D4 k6 ?. j

  7. , b0 ^6 m: B" f* K+ O" ^( K
  8. */QRcode::png("abc");
    8 ^/ h$ _2 L. J7 h3 |

  9. " S' X3 b1 j* p4 r2 d, F
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**6 v2 G% g  e- x0 ?9 Y& T2 Q

  11. ! H# W0 w; R8 H
  12. * 生成文件到本地) ^2 b( o* L4 x1 A7 I
  13. $ W& a2 k0 @0 I
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)$ _8 {5 b  c) K9 R/ @4 D

  15.   g. W7 f  X' {+ a. A9 e& f
  16. * PS:$saveandprint源码的p6参数做了修改
    & J% b1 b! P& U1 B) [* j6 ]
  17. : V8 o, U$ [, X, j
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);3 s; f! v0 s7 Q+ [" I, n; |

  19. : c/ k' A- h" e$ v
  20. : A6 C% [1 E/ \) P
复制代码
. y6 q7 s$ u7 ?
2、qrcode_logo.php
  Z' D* b/ S$ L" a1 _7 Ups:生成带Logo的二维码

  1. ! q' ~0 n1 ^# K, S  p+ N# Y
  2. /**
      j' x2 l. H* l/ D: X

  3. 8 y) t  m, g' ]# R- l3 t9 T& N' w
  4. * Created by PhpStorm.5 K# R9 _" ~+ ]% _* h; z$ f

  5. 8 d- W4 i- L1 B2 Z- I/ F( D
  6. * User: user6 a) [8 D2 h( \( G. L$ u& ^. g" p" M& n, g

  7. + t! ?( b" m; q- u3 f
  8. * Date: 2018/8/161 b  ?& m/ U+ I- A
  9. 3 m$ O& u5 z  z/ F8 U9 g) w' V
  10. * Time: 10:43
    * \' l* I1 i7 e0 g# R

  11. : h, `! B% r, p; J% s6 @1 J
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    9 C  r. d4 l* s, c* ~# I4 w2 f

  13. 2 E* p; A6 ^# J4 a0 j5 L
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称+ r1 w! q  n. Z# s3 e% G

  15. 1 Z0 S; Y4 k0 _5 \0 ]1 Y, X
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是" C2 Q' A' W( i8 E- ^
  17. 6 N5 S9 b" ?2 K/ t2 z  m$ {) r/ Y
  18. $margin = 2;//边距5 p" `1 n) ^9 R, w
  19. # R0 k' I2 r* S
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片4 f( k! F9 C& S6 k: L
  21. 0 k, S* n( S7 V7 P. k
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    . ?2 x/ F3 `/ D: K& j# j

  23. # d$ R* _$ h% I! g
  24. $QR = $picPathAndName; //已经生成的原始二维码图: |* }: o8 j$ k! z& a0 k: k
  25. ! l* Q( e1 W1 W: l0 F0 C
  26.     $Logo = './pic/logo.png';   ) g7 [' @/ A* k* |
  27. # A$ M8 Q- V7 U1 [
  28.     $Logo_re = './pic/test_logo.png';   % u8 @; t( `" P5 i3 j# Q" w
  29. , c% b+ K7 A" A3 F1 T) q
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    8 @. I+ E" J& @$ j+ U+ C) |
  31. " e7 k& B* D& D* T
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));     Q$ B/ b* N. k' ^+ n' p2 D

  33. 5 m' N8 i3 {4 Q6 P
  34.     $QR_width = imagesx($QR); //二维码图片宽度& Z( l% ]# a* S& e& }% ]: M. v

  35. 7 c, b( L1 l/ {+ l2 `1 z1 @7 v
  36.     $QR_height = imagesy($QR); //二维码图片高度8 K8 S( T* D7 x( K, |3 S3 o8 b
  37. % h6 j; C) ~9 `* n% J4 \/ v
  38.     $logo_width = imagesx($Logo); //logo图片宽度' x* u0 p7 E8 z4 ^6 F7 y/ |
  39. 5 f9 l9 J( C) W  _1 U$ q
  40.     $logo_height = imagesy($Logo); //logo图片高度. e9 R2 i% A+ n+ u

  41. ! V8 f1 Z! c  j, U
  42.     $logo_qr_width = $QR_width / 5;   ' z" v7 v3 l2 }; D! K$ h& E( G

  43. 1 T- R* Y) m, H' a' x' N% r' _
  44.     $scale = $logo_width / $logo_qr_width;   
    / A$ z5 O3 m5 a/ d

  45. . ^% L7 B$ c$ U; Y
  46.     $logo_qr_height = $logo_height / $scale;   : l3 |3 A' G' q2 \4 h- B

  47. 3 R& G' Z+ F* D0 b3 W  L, U
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;; r6 c9 @1 e+ E9 P7 w& t! j
  49. ) p) |7 P& Q: g' }0 x, |
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   " {4 f$ E- A$ ]6 s: {$ m# m4 T8 L
  51. . f  i- ^4 A+ [6 p9 @3 e8 J
  52.     //输出图片: A. G$ l+ S) m( P
  53. 3 F6 a. }1 t/ t( E) }
  54.     imagepng($QR, $Logo_re);9 d% ~% ]! b: _# l

  55. 1 x& p* h9 G: B7 V4 G
  56. }% g. \  `) D" _- v# L: b- q

  57. 9 d6 S; p3 Q+ X5 T4 {7 s. d/ [, @8 F

  58. ; }$ x0 g8 y# P5 i" F# }, x+ s
复制代码
3、qrcode_vcard.php (生成电子签名)# B! Y5 K3 z% d) |

$ m3 t4 Z. s; dvCard格式:https://zh.wikipedia.org/wiki/VCard
' [  D! W% H. I; X  A( Z& W
6 F* P# b8 a+ N: r5 e; @% r7 O
  1. $ J. P8 d3 l7 d( c3 @
  2. * Created by PhpStorm.
    + M  j) Z* a! T

  3. 6 }) L5 C& G9 b0 P: Z0 u* ]+ \
  4. * User: user
    $ F- \' y/ f8 o1 `: _1 b" ~: ^

  5. 0 k% E0 c4 @+ y( P  D6 Y
  6. * Date: 2018/8/156 s% y4 N) T2 ~$ F
  7. / L1 d: J  I- ]* Q$ z2 b
  8. * Time: 23:00+ y8 m+ K; p/ |" f$ B3 h; O" c
  9. ; `; @! ~$ f( J
  10. */require_once "./qrcode/phpqrcode.php";/**
    " o- _: I( N" l' B

  11. 8 W& J0 E/ [0 M% l' Z7 b
  12. * 生成电子签名
    / J/ I! @( I: c7 G( g
  13. + h: q. g# {- D& v
  14. * PS;使用微信扫描二维码
      l% x; x. e' C: |! n+ N

  15. 7 P. c( }0 ~& i0 v& X
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    5 j0 v+ m( K& u  W9 H: j/ s
  17. % [+ \$ y& j; w8 J
  18. $content .= 'VERSION:2.1' . "\n";//当前版本, s; O! J& C. i8 R; c+ W& v  [
  19. # r3 t4 V4 y' o; x
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    7 A4 _' E2 b4 M1 ]0 [

  21. ; a* [) v3 P; o8 I; P
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称" V* P8 b3 [4 B5 B
  23. * \8 R1 Z$ N9 z6 H4 i7 e2 }
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位+ Z! J8 P. s% k- i6 \2 o& i

  25. " U5 t' J% L+ i' G0 l' y- d
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话0 o6 d& W- v7 g
  27. # ]% S: q2 ^1 G5 @7 q) l$ C( Z
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址& g- N, j) y2 C
  29. $ x6 E0 x  f' R, I( w; k6 z8 Q
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
      w2 P, t5 |$ }! \# g' g

  31. 0 e- @4 G9 D: V8 K7 \/ A6 p4 F* d
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话$ I/ |$ W2 S$ m0 F$ G
  33. ( e/ A4 J5 \8 ~- ?& u/ f& r
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱$ y% {. |0 I3 `4 K* M$ Z

  35. 8 Q) e% Q1 G* |2 O
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    5 Y% J" P! n  X/ \( R; S

  37. * F; w' m$ `4 Y1 E4 ]2 i& V
  38. $content .= 'END:VCARD' . "\n";//结束标志9 Z- j1 C& T. D* K$ N5 n
  39. 5 V) n# L9 e: e! i2 G( `
  40. QRcode::png($content);
    ( B% h8 z2 E/ `% M
  41. # {# G& `  V0 I/ }! k

  42. 1 ~. V! T! T- h; `) n' V' s% p
复制代码

3 x4 i  e$ h) H相关文章推荐:/ g+ K7 I$ c1 E( i8 k* ~3 l
1.PHP生成微信二维码实例
6 [3 }( ]5 [# K0 ?2.php网址转换生成二维码% v2 h+ W+ p" v2 ^8 l- y
相关视频推荐:; L+ {7 f% I: `
1.独孤九贱(4)_PHP视频教程* ?: @0 L* A9 w5 i, r
二、JQUERY生成QR CODE4 L0 A: z; ~' U  u8 `% h
源码地址:https://github.com/jeromeetienne/jquery-qrcode
2 n# w- `# D# Q: s! _1 Z3 @% {1 x. [( K, d. y+ a
jquery_create.php* z4 l& D- E  c' V+ l

/ M) Z% }5 A0 {* G4 f/ f
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

. f2 w; y! _6 u1 u. p! M$ c4 W" |三、PHP识别二维码4 w% G9 b/ V' \# g
1、方法一! B. l: E  c, t! Y
环境需求,安装如下扩展, F) c- w  k3 z3 N$ Q  h# g
- ImageMagick
" Q/ S3 Y# U7 F1 x- zbar) [) E0 B. J/ W
- php-zbarcode
- ^' e, W+ y4 Z
5 c; ]* m  T1 a" G" B3 ?2、方法二: |' z( s* F7 C( x5 a" o1 r
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以8 f4 E+ W- ?8 H9 L5 _1 Z  {
qrReader类:https://github.com/baagee/php_QrReader4 ]) P! }& [$ n, b0 k
9 x3 T7 N8 S1 Y
  1. 3 V: `8 Y2 T- {( S2 ~, J: n2 R2 ~
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径, O  ]! `  o- F* G: [
  3. " ?. O9 l# Q# ?2 Z9 i% T: w
  4. $text = $qrcode->text(); //返回识别后的文本
      X3 a. I  g: I
  5. & \! u: t5 \( |8 \' H" M& h5 i! i. H
  6. echo $text;0 Z/ @9 n0 m5 K  P" E$ D! ]4 t
  7. * Q5 R( |5 x. N$ j
  8. - a/ c; |7 K) y! o
复制代码
) i, x3 l; ]$ I4 w
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
' a# k# L) ]( [8 j) b* _, E( N$ T( ^# w  l3 {
9 ^. v6 D6 S9 i+ E3 Q, k

: w- j" c3 |& Z- F& u$ L/ [% E9 q. m0 m; I1 h5 M0 u

& K5 O9 g5 Y% }' M* s" Y
) ^$ B! h3 q# b
: ]. I5 F# F  ]* S! n+ X7 F. j* A3 V8 o* [: p3 q6 k2 w- k
3 x: V% }+ x1 i% W" d

最新评论

浏览过的版块

GMT+8, 2026-5-2 11:46 , Processed in 0.056375 second(s), 22 queries .

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