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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

cncml手绘网 门户 查看主题

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

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

本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。$ V; l9 R- |) |  A1 f
---------------------------------------------------------------------------------------------------' z) }+ E8 m! n: M) X' Y( o; b% p
二维码的分类" ^4 y) Q6 p4 k6 C9 D% S8 w
线性堆叠式二维码, Z2 `, r0 B( |8 U9 B5 ~5 i( ^* W

$ N$ R" ^' y' j+ L% I7 i, i矩阵式二维码- A' ?' u; z5 _

, R8 G9 f3 T8 t) n! s9 k, @3 V4 Z二维码的优缺点
& V7 S5 J) C; @: I' k' v6 S优点
% S% r% g. o3 ?9 C8 [) |信息容量大' h5 k6 B$ t/ P8 o& r; n

  x/ J, ?# s  b% f- W2 C+ G编码范围广
% \. S- a+ T/ L8 h  M. B# U6 q) V- u% H) m' h1 d& a
容错能力强' E% C/ ?9 _5 Z' k/ J6 t
) P2 W' ?' I. s- C- F
译码可靠性高( j/ m8 Z6 b6 V% i% g) @6 w+ r
5 k( L' ?) g- p8 H1 V7 J
可引入加密措施
  ]9 C( S7 f$ I9 U. h) n  H
6 R$ m7 w- f# h) d6 a成本低,易制作
( ?6 ~+ G2 \2 Y# k
8 n" T  P) O4 r缺点
1 ?6 ^% N# p: ?7 ~- `# a二维码技术成为手机病毒、钓鱼网站传播的新渠道" z- i7 x5 E: n, F2 H) Z
  _+ a' |0 H" q& B8 L9 S4 r; L2 O
信息泄密
5 m) e  c1 e+ c' [
0 X: E+ x  ]. \9 n! @3 X6 n目前流行的三大国际标准% O; }- k- w6 ^8 y3 W" p
PDF417:不支持中文5 u7 S! i! k) e% Z$ r, o

9 V. ^3 a7 j3 V4 {8 oDM:专利未公开,需支付专利费用
# B3 I. c1 F7 @- D
/ P7 t2 I3 g) q6 [7 MQR CODE:专利公开,支持中文- s  o( y, L( e. P2 O
& S. `' P! C# T1 e# E2 m
QR CODE 纠错能力9 a+ G9 A) Y4 j4 v* m, U" c
L级:约可纠错7%的数据码字# U; p$ e* m: r1 W" c3 H( P, `

% M1 `- Z/ C; I& LM级:约可纠错15%的数据码字
) U; b- b4 G2 Y# Y9 H1 d4 o) R+ _0 Q4 D% t% d/ I, I' D
Q级:约可纠错25%的数据码字
  A) y- c* t# ]! {% T1 h  k) m- Y7 n& ^' a9 |/ C! ~" Q% F
H级:约可纠错30%的数据码字8 C5 w& @  v' f% D
9 g% U! o+ S, M8 I4 l
前提条件# |* j; b1 E2 v, k8 d3 ]
GD库. V  q" x$ \9 j* v1 _5 B. h! V# j
! G0 |/ s, @1 r4 O: D% s
一、PHP生成QR CODE9 n; W: J% j; q6 ?+ L, ~
官网:http://phpqrcode.sourceforge.net/
# \; H& u% a! x; ]) ^
9 Z; ]" `' x9 x! w+ m下载源码:https://github.com/endroid/qr-code
! j4 j4 U% }: D% P1 ~/ r1 r$ E$ P1 `+ b) J: H1 \) d
目录结构% W* O, {- `8 W

+ g* l) s. m1 ~- f4 X$ e2 d2 Z  p' `) |( j6 P
1、qrcode_create.php
, \. x% ~9 E' E4 H5 p* `ps:生成普通二维码
9 y8 O- Y5 X1 K* m6 ?$ A
  1. " Q9 h* \; G% {, ]
  2. include_once "./qrcode/phpqrcode.php";/**; Y% r. e1 E) G3 D& L( I

  3. $ O+ W( r7 V% v: p6 V+ W
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径3 `) y0 P$ h) Y  U

  5. - ?$ h! [& H8 y# @: O
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    * Y# P6 R! B3 A( d

  7. 7 f" d6 u6 O# X+ S+ @5 E) z
  8. */QRcode::png("abc");
    $ T1 Q3 w) ^9 ^! q& ?) N

  9. 4 r5 R/ u5 g. a
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    0 i% m/ R" d( X6 o* r% Y  L

  11. 4 {( K+ c: m" Y
  12. * 生成文件到本地
    ' \6 ?5 C; J% O, K/ Q3 j$ u
  13. $ G1 f1 L' ?- @- }- O; `
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    . {. C+ h; F( R! @+ k4 r8 l

  15. 7 j- a8 H9 e7 h
  16. * PS:$saveandprint源码的p6参数做了修改( Z; ^+ x4 Q& H$ z8 X$ V
  17. ! ~; s8 E" ~1 e0 S7 x
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    * H3 D! ^7 i2 p! ~7 O* j# e0 Q9 g+ h1 \
  19. * U9 {  N, R+ ~
  20. & }: |8 i8 f: z- ]
复制代码
5 {8 \; y" Z: r7 A
2、qrcode_logo.php
& |: N) b% j9 _ps:生成带Logo的二维码
  1. # X" D/ a( r) f, j6 P# B& b
  2. /**
    8 v2 \& z! P( h
  3. * V) H6 V( \3 E% t
  4. * Created by PhpStorm.
    " q+ R8 J7 ?; L+ O

  5. 8 J" J$ I& K& Z# c) U  w
  6. * User: user
    8 G$ A( [. Q8 i/ z; \* G# |  f
  7. ' t: c. j4 J! ~6 g
  8. * Date: 2018/8/16
    2 |2 H1 y; b0 X4 A7 f# @0 D

  9. - D4 U% y/ M% K3 P2 ~
  10. * Time: 10:439 S1 J8 M& s+ ^4 |' g2 s. U9 p
  11. % J5 `: l" V* F: r$ \# g- Y2 |# E
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    & S" I% s8 n3 R- S$ b0 u

  13. * F2 B! X0 q8 Y) L9 @, y( d
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    6 ^, p" Q3 k+ X
  15. - ]' o1 D5 S$ K* S8 v' v$ k
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是( D! I+ b# C( z' j- b3 U. L

  17. ; S- C% l: `% F4 ^" O. m6 |
  18. $margin = 2;//边距. Z( P; @8 i: n2 D, u* y
  19. 9 E4 i" S$ a* O8 C0 d
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片  l0 o! |7 Q8 {

  21. 3 q! }4 L  _1 v- z- C' ~$ n
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   , S3 D! V9 |/ O9 G. G5 ]

  23. / D% c' q* x, i& H+ Z- [4 p
  24. $QR = $picPathAndName; //已经生成的原始二维码图4 Q8 }+ a" D1 C+ W! B# G1 g
  25.   ?/ q5 k* `, O2 t2 _: f
  26.     $Logo = './pic/logo.png';   1 F7 q0 A( u0 y. N- x
  27. 7 ~+ z" z& O0 t' o% \: R5 ?- W+ f
  28.     $Logo_re = './pic/test_logo.png';   
    # x9 n. z9 J4 |' f

  29. 8 B2 K8 W+ J2 R# b
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   : V( g8 R. a. E2 j" O) _
  31. + A7 ]8 k6 S* K  Z3 l' |' a6 A
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    ; U8 H6 G: Q7 A8 k9 R  G
  33. & O/ c/ b& D% J0 G% u6 n& q
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    1 e" D5 q( E6 c
  35. 0 J8 T4 {) U9 q1 ]5 r' S* G/ T
  36.     $QR_height = imagesy($QR); //二维码图片高度$ i2 L( C5 i, b9 ^
  37. ; t+ R- L6 p1 i/ j. X7 Y
  38.     $logo_width = imagesx($Logo); //logo图片宽度# _/ o' i, m. b' i5 f- y1 j

  39. 1 {9 e' m8 s' @
  40.     $logo_height = imagesy($Logo); //logo图片高度: W% h! o- F' W% v& {0 R
  41. + l. _( P: f7 P' }! L: u
  42.     $logo_qr_width = $QR_width / 5;   
    ' e8 ~. ]7 o( r- i- t

  43. & Q0 f: R$ C4 f8 o; ]7 K) O
  44.     $scale = $logo_width / $logo_qr_width;   * I# l; Z/ R5 C0 Z$ Z0 f. E9 i

  45. 5 k# D1 c! F- q5 C  O- k. F2 m
  46.     $logo_qr_height = $logo_height / $scale;   " Z4 I6 k! h6 T0 I7 G# Q7 ^

  47. / N8 V# a6 _, O$ M
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;4 {1 C" r6 p$ ?- {: q
  49. ; g& b9 e% J3 C; _' `
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   8 m( C7 b6 B$ s/ L! \

  51. - Y$ u' M' z" T7 a0 _
  52.     //输出图片  ]5 C+ z9 {/ o5 q
  53. / J% x, E5 [# E
  54.     imagepng($QR, $Logo_re);
    2 ~2 S( G8 [% ~3 a& ~, q3 Y  X

  55. 8 H, R+ {2 P, x. Y1 O# e7 r
  56. }2 s8 S' O1 X+ w5 d2 h
  57. 2 d1 b. O5 d' z, m. h% z5 k# Z

  58. ( h7 f. T% }0 i" g( L
复制代码
3、qrcode_vcard.php (生成电子签名)3 R* e4 i& C  v! E. A+ d! ~5 e

; Q# t0 F" b' K* `/ OvCard格式:https://zh.wikipedia.org/wiki/VCard
% I7 B: f" K, o0 C
7 U8 q9 S% [  G+ X7 I  X- @$ Y

  1. ' G. W6 O( s% z5 s+ H7 a+ Y" T
  2. * Created by PhpStorm.
    ! u3 w# \7 {& ~1 \% g) }% W$ D7 `# e- ]

  3. 3 M" H; X/ [  |4 D0 c
  4. * User: user7 {2 d! N. u% u0 ^3 `+ H

  5. 2 n, P' o6 _& _! `6 g/ x3 I, `$ n
  6. * Date: 2018/8/15
    ! ?0 c' E- L# Z1 s2 E3 R& ?! l% d

  7. 1 V% T0 @9 U/ z7 J4 Q' m0 ?
  8. * Time: 23:00& z& z+ u8 c/ s5 W
  9.   u4 a, J5 D' b+ G' E9 u+ y
  10. */require_once "./qrcode/phpqrcode.php";/*** ~! `( V- k( Y' ^% l, g

  11. / u, l1 Z0 {9 C& c& X' \
  12. * 生成电子签名
    / |: E$ A8 z; r: I* A

  13. 4 g2 k* B! \% j  ^
  14. * PS;使用微信扫描二维码2 b1 |6 y  I0 E7 m# a
  15. # j7 Y6 N' p, A; j# ]% c
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    9 Q; e& w  P5 |3 W/ U
  17. 4 X0 ~0 Y/ S  C4 D! P2 F! p, j2 `2 }
  18. $content .= 'VERSION:2.1' . "\n";//当前版本- L9 s! ~  b8 Y1 Y* L/ e: `
  19.   j$ g* V) A3 D. t  w0 y, x; B
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名3 T- C: [  [# m: k

  21. - S2 M3 ?0 H; ?! e; a
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称7 F3 W( n) [0 W. }- R& Z5 G& K7 Q
  23.   K7 V5 H- v) k7 T- g4 I2 [
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    , K: m% \5 M7 l& |  P+ Z; f

  25. 9 \2 S) X; _: R, @# p4 w$ }* d
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    : C1 {. z# r' k# q0 C' `9 t4 S

  27. $ i3 N  _' y! H  b  i! T8 X* e
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    . g) P, f+ O) |6 o$ Y+ H; x
  29. + y! U# k+ F# J6 C% n: i/ e
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)! F4 H" ?( T6 [  \
  31. + [, v4 H1 K" ^
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话+ j$ q0 d0 t8 X+ ?/ q
  33. 2 r; n* Q7 c( H- J
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    ( z! j) F, B( b

  35. 1 E2 [3 x7 ^# ~6 C0 l
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页6 ^, K- W- G2 m/ ?! t6 z, A
  37. ' @7 N: q( e! f- ?2 P! i7 t  Y
  38. $content .= 'END:VCARD' . "\n";//结束标志3 |! z9 p0 ^) u+ K7 f
  39. " _6 f, }% o1 b# `# k- y6 {0 D
  40. QRcode::png($content);
    & e+ ~# p5 U# P6 Z& D7 \- K5 b
  41. 2 e( S4 A$ o) Q% Q0 s
  42. ) N, I  @8 k. X4 ~* ?( s( ~
复制代码

5 w) i" N# a  S6 S6 K相关文章推荐:
3 Y3 j; ?) Q+ U0 l* [" D5 t% v1.PHP生成微信二维码实例
: q/ V  i: u4 m! h6 B2.php网址转换生成二维码" [& r6 f. ^+ Y8 |' }$ D
相关视频推荐:+ \; t) ]' o2 O* n. Z& o3 S
1.独孤九贱(4)_PHP视频教程- Z. I4 ?- {( G; N; x0 K
二、JQUERY生成QR CODE
5 @" _! Z4 V- [# l. D0 T0 B8 c源码地址:https://github.com/jeromeetienne/jquery-qrcode5 Y% {- B' N8 t! m5 i& L
' w* e0 G! B) C  K
jquery_create.php
+ X4 c" n3 ?$ V4 _1 h& r7 d- a8 S; R/ o, {; F, {
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
+ F* h. O% b! M( E* L
三、PHP识别二维码
% A& V$ y) N6 c* O1、方法一8 ]' {  \/ u! v  T
环境需求,安装如下扩展
- T, c, Z% e8 D7 g7 ]4 b6 y- ImageMagick
: j; U7 ~  }, m5 d2 }( q4 U- zbar
/ F# T3 J- [! W0 G: i- php-zbarcode
7 s8 R& s7 b: \
+ K3 i& s( X& G' p. a6 |2、方法二; ^1 Y# L& }  q" l* o6 |; ^$ u
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
2 y# T# {- I/ J3 Y4 X% j/ {qrReader类:https://github.com/baagee/php_QrReader8 v4 C) p, p. Y
  N" a; {7 u6 F8 o
  1. 8 x( {: l4 V9 Y0 a
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径8 ~- A1 E1 Z8 H! c% I& }

  3. : P0 X4 N9 S  V- u
  4. $text = $qrcode->text(); //返回识别后的文本
    # i- |' a  i" S8 u6 w: S2 F
  5. ; ]  B% ~# }  ]# f2 R! \
  6. echo $text;2 h" R1 ?+ c' n' v0 ^
  7. : k( p9 t7 n0 S  y% c* ^$ a, M

  8. 3 R) L( ?. @7 w% O. {
复制代码
# }6 f/ k, ^8 X. }  T7 O  {
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
4 S3 F+ J0 N& [# s) p$ k+ j+ A. C. c1 z6 p

  s% d( i# N, R2 A
2 E: z7 e3 }, Q. ?7 k# J0 |" q
0 a, h3 T, B1 e1 G3 ]
  w5 B6 n1 d* P3 D; ]6 n, J( G/ r# m: M% c

5 I) b1 b$ C  Y3 V+ V. y+ a" O& D8 x& }6 W0 Q0 j6 p2 W
& R" w0 M6 r4 c4 m7 Z! T/ g3 G

最新评论

浏览过的版块

GMT+8, 2026-8-5 01:12 , Processed in 0.060413 second(s), 22 queries .

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