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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

cncml手绘网 门户 查看主题

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

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

本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。# u8 Q2 _0 ?& B/ `1 m- \, R8 }( M
---------------------------------------------------------------------------------------------------
7 S7 _7 w" L3 {) F4 |. @二维码的分类' j8 `' Y# W* |: X
线性堆叠式二维码
' O; t- z8 a# r
6 z/ f' g) o) }, [# ]: D2 e3 R2 R矩阵式二维码' k6 v0 w& n/ E3 H6 D
1 W1 P& \& ^2 a
二维码的优缺点
1 f: `; V5 r7 G  n& x: z优点
% N8 ?7 K' C+ P0 Y2 f, V8 U( l信息容量大
/ o$ D- W6 U- X8 L3 i/ M# w) x/ e. ?% @: Q, ~
编码范围广
: A. q0 M2 p5 p+ A7 z0 f2 ^4 e7 z* B0 G/ U6 c8 c) S
容错能力强3 J. P/ T$ k3 P( D. d3 {: I

7 B8 F8 T' O3 p译码可靠性高$ m. y1 n9 W* k; r% S+ x+ m" c

9 ^( j1 ~! c; E! ^2 U可引入加密措施
) t8 x+ B" T, t" ^
: I$ v. o; W* ?% i成本低,易制作
* e- `# s6 s  F) W7 [
5 Z6 z* t) t8 ~0 F. G6 E- f& \缺点
+ Q% Q/ p  X% V二维码技术成为手机病毒、钓鱼网站传播的新渠道
4 k& C, W5 c& i3 A  x
# F6 U! k* _1 G5 x1 p' v- u3 b% v信息泄密& F/ x# E. h4 u$ a+ c# s( }: K

  L) K  M0 [- I) _/ o" N目前流行的三大国际标准
2 m3 w# k% V' S  r4 r( G+ YPDF417:不支持中文
. `; E0 i3 m' D" ^; p, W
) C( T& n7 r7 g9 r6 g! t9 NDM:专利未公开,需支付专利费用8 P$ a" E6 ], x: [, C" u

. A' j, k# n0 pQR CODE:专利公开,支持中文
- o* C) _2 b3 Z1 r; c" v; D+ y! L6 p! g* m2 m( e( g9 x: B
QR CODE 纠错能力
* D3 _4 g$ j( |  iL级:约可纠错7%的数据码字
$ _, z+ A# p9 u; L
+ R& ?* X+ X3 @M级:约可纠错15%的数据码字
# ?; i: }" u7 k* ]1 e7 z4 \% Z( N; X. z& _- `* `
Q级:约可纠错25%的数据码字2 _# d* T; o3 d" I" l. g9 M+ `

& J7 N. H  K5 Y1 L' J1 G2 PH级:约可纠错30%的数据码字
. a/ X. y6 w0 q; D0 k' y* F' [- ]4 J4 J& R. q
前提条件
! t& c- ~4 [6 f, o8 O' w' BGD库
2 j  G+ O1 C8 V1 b4 g. b+ Q
0 b! _* v, e8 V4 a一、PHP生成QR CODE
' k) W9 K8 Q) f# |% q: L. V* Y官网:http://phpqrcode.sourceforge.net/
9 N) @, N9 A$ d& K$ \3 P/ L4 Q) U$ W- ~8 C. Z: {* ]
下载源码:https://github.com/endroid/qr-code
. i( P' Q  l" y9 E
. |! K' I/ m! S! u2 @9 o+ x9 }6 J目录结构. B% D, M+ `! F* Z4 b8 v
03130c7c8ed2925e6f0fa9bf23525edb_1573193604581540.png 8 W. n0 U' E7 ~1 C! X

0 y% s) h; @2 C* z7 ~0 q9 x1、qrcode_create.php
- |1 r7 p7 C4 |9 E/ r% ~ps:生成普通二维码
' L+ @% u8 j% B

  1. + Q; m9 @5 E& C3 r( q0 z
  2. include_once "./qrcode/phpqrcode.php";/**8 E* n" F% b5 v
  3. : l2 {! G* a0 t8 F& Z% @' \/ K; T$ y
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径' v, F2 U; s8 j" P8 E) ^
  5. ( g- f: t5 q" ]$ S0 J
  6. * 在浏览器上直接生成一个二维码(内容为abc)% I. w- o$ V- Y; a& \9 I* _1 K' _% G

  7. 0 n( g7 U  W$ B+ P
  8. */QRcode::png("abc");. v2 Z7 C1 e- I4 i
  9. 9 |& P8 R0 [3 T. }
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**( q/ {/ V  `4 ~: V9 p2 o

  11. / n5 t8 T$ O/ H+ ~4 k
  12. * 生成文件到本地
    . `! z1 C' L- F$ \/ T0 K
  13.   F' {- z3 L( p0 E: E
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)7 h- G3 E- X; G( S

  15. ) D2 U9 T- r; r3 ^
  16. * PS:$saveandprint源码的p6参数做了修改. @' G- I! |, e/ ]+ y! w1 s
  17. & V+ K+ o8 C5 ?: R' J
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);+ ^; ^+ u9 `4 P( u2 @
  19. - F$ T* H& {: n: ~6 o9 t: }3 n

  20. 9 t& j, h  ~7 E5 d
复制代码
! p$ R4 |2 f8 R
2、qrcode_logo.php
  _. d" G4 B; t( ops:生成带Logo的二维码
  1. 5 b8 h( @# @" a8 q
  2. /**1 p9 I3 l% U" F' _/ ~1 I: N( c; G/ f

  3. : E$ s* f* X) \1 J; {/ s' C
  4. * Created by PhpStorm.+ h' J4 k, u1 z4 {

  5. 3 Q0 X; C& a$ b! L% A( z' N/ @, _
  6. * User: user
    9 t5 h. Y2 ?0 Q; {* I' L6 a

  7. 2 n! r) m0 n# \# f+ _. ^
  8. * Date: 2018/8/16
    - N* u0 B: }7 G2 @

  9. 6 W0 M; G% g& ?/ [( y) G" z; i% r
  10. * Time: 10:43+ p  h; D" ^; ?/ S
  11. ' h; G, J+ ]6 y3 @8 M
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";- j+ O  o. J3 R1 D+ _
  13. ( R; Z, a* r/ r8 d
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    9 i  D' y& h3 {* }  \+ p
  15. - \+ }7 q) d& G; t/ l7 _* W
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    3 y( D8 X% {* b2 M! L9 a
  17. 4 ]- w. F' t/ u2 ?9 B8 q* k
  18. $margin = 2;//边距. ?1 n8 ]/ S6 E/ A( o

  19. ( B- W# v0 E. b* I9 f
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    # ^& E% l. ]5 ^0 v

  21. 2 j7 V; W0 ~0 o5 s5 L, N
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    5 q$ p) W1 P, T
  23. ! b' ^7 I: D3 s. A
  24. $QR = $picPathAndName; //已经生成的原始二维码图: G: d/ R, F/ U/ [! O
  25. 5 \8 S3 E1 H: H1 h/ W6 w
  26.     $Logo = './pic/logo.png';   4 D' B* f. Z) K! E' j, y+ U

  27. , F" H) x: T+ l- C& a  ]+ M
  28.     $Logo_re = './pic/test_logo.png';   
    ) V$ b4 _0 R' K! s6 g
  29. 7 z& X1 b3 G* P! k* o0 y
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    7 T' H  T7 L6 m, _2 O6 }

  31. * H" K3 J  ^+ ?- g3 w  R2 c
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   5 R8 g1 e+ [) T; S

  33. ! ]3 K7 L/ `% V: @: ?7 U
  34.     $QR_width = imagesx($QR); //二维码图片宽度1 W1 d& k8 w" P$ ^
  35. . F. I: e' z9 X* c* f" N
  36.     $QR_height = imagesy($QR); //二维码图片高度
    : ~; ?  c: `/ @, A9 V4 r) p

  37. 6 d- V5 Y0 m/ l0 L
  38.     $logo_width = imagesx($Logo); //logo图片宽度4 u" Q/ \$ ~% v
  39. 8 {) N+ f8 y1 _
  40.     $logo_height = imagesy($Logo); //logo图片高度8 d! N3 q& [( R/ g; Y5 K, |

  41. 0 L/ _8 \9 t9 V- g& D
  42.     $logo_qr_width = $QR_width / 5;   
    / {$ z3 a, b  g8 L: k# h

  43. ( E/ M8 N4 G1 B, C7 @; g
  44.     $scale = $logo_width / $logo_qr_width;   - Z/ }+ E1 a' r% G" P$ ?9 j

  45. - ^  E9 P1 x( u7 |1 Q2 X3 K/ N
  46.     $logo_qr_height = $logo_height / $scale;   & B& F7 ~! B' n- s% G! d

  47. & B4 q3 Z# y. h' l, I$ Y+ l
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;% ^7 g8 }3 e) D$ w% a

  49. & q4 c; u- {# B8 p! L. v
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   $ c4 ^, N4 I) ?6 i" S  y. J9 n

  51. / p) L- Z8 C9 p' Y# x; W: L9 \
  52.     //输出图片
    # b, x. V0 d3 L+ H- w! M

  53. " i4 n  I, {% c6 \
  54.     imagepng($QR, $Logo_re);/ p: P. M4 F0 A  r
  55. 0 Q4 h# ^: d4 T
  56. }
    5 _+ O1 m- b/ U1 R2 Z/ g% W! y
  57. % V: r. Q. v* N

  58. 4 I, Q, Y1 v$ L# S
复制代码
3、qrcode_vcard.php (生成电子签名): X' Q! w  L+ _1 t0 A

! E& J1 w% V+ n7 H* D4 D' t+ pvCard格式:https://zh.wikipedia.org/wiki/VCard
7 k2 \, _) C) E; v, t7 Y. k9 T' d
+ W5 g: a' n4 a9 n, x

  1. . V% w2 S/ U" Q  l8 ~5 N. r( b
  2. * Created by PhpStorm.
    2 i( @. k# ^' `1 l. U$ l

  3.   S8 M9 |9 s' a0 i7 p8 h
  4. * User: user8 S& ?& {. f- V. }7 \, e
  5. , X. f' l8 W. R6 P% o( |: X
  6. * Date: 2018/8/152 z9 |, m: t' z+ R3 Y( E: _

  7. , `; J3 }% a' Z4 o6 ?6 D+ m9 H2 H5 x
  8. * Time: 23:001 \! F" ^+ e2 b9 Z8 j

  9. 6 l8 d$ J0 K& H. l. V2 f
  10. */require_once "./qrcode/phpqrcode.php";/**
    8 c& }& D: k2 L+ [
  11. , ]6 K+ q/ ]( M) G4 U$ ^
  12. * 生成电子签名5 O3 s% S, |( T$ |" s- j0 ?# H, x. n
  13.   [+ c* S" C+ H8 x$ Y
  14. * PS;使用微信扫描二维码3 ]" ^; w/ n- e. d& P: t* b

  15. 9 c7 E, d% ~; n3 @
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    $ J: D# N) M! B  S" V

  17. : g* I  a, |  j4 S$ a
  18. $content .= 'VERSION:2.1' . "\n";//当前版本- D3 ~4 G- k) H
  19. ' m: s$ O9 g! g) S. Q( m
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    6 O( z" K% Z/ E# P1 L% N) J/ T

  21. & q/ |- w8 [( ]2 L; g2 g9 w0 s
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称& I/ \# l/ a* [3 p, d* {
  23. # k$ {$ W& C2 F' _& `
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位: J7 L/ ~2 d1 W( {

  25. , A% H8 o& T( E
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话3 l7 i4 g* A- }
  27. $ A3 Y. d3 f4 f2 j
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    3 D" w2 [+ Q0 S; S2 R, Z0 X
  29. & ^+ k& w9 F: q+ p/ }
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)2 b1 p0 L, n- W) j/ K# f, i

  31. . }2 i0 d% a) E: ~% u
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话) \7 r9 I$ P5 ?

  33. % L) K# I# V5 E7 q2 H$ g
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    " f0 X. I/ C  W& m
  35. & T! l# x! |$ C( ]  ~. y
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页: S: s3 C% f4 x  |* D' L
  37. 6 A1 l* J0 U* S/ m/ D
  38. $content .= 'END:VCARD' . "\n";//结束标志
    2 B) i! u4 `/ ~1 V

  39.   s: Q3 m% P+ {1 [
  40. QRcode::png($content);
    . B' O( B1 y' a2 z! E( Q
  41. % c) E; Z# i1 g

  42. 0 C6 V- ~$ t+ C( b; d$ V' o
复制代码
8 U  f- D& Y5 S: E" c; Q# B6 s
相关文章推荐:' d2 |& A8 D  _! d% K+ I9 N
1.PHP生成微信二维码实例
6 l- v% I5 i& b2.php网址转换生成二维码
8 B# U' n0 J) F# ]  ?+ r/ G& g相关视频推荐:
6 C) S, }( i  w' u' ]% |- e( L# O1.独孤九贱(4)_PHP视频教程. ~) O2 r" f" T: p9 c8 p
二、JQUERY生成QR CODE
' t" W! c2 Y8 }( i2 j/ D9 |0 l源码地址:https://github.com/jeromeetienne/jquery-qrcode" r$ m1 s4 ^# M7 Y9 D5 y; K+ A

( L; s3 N7 ]  `jquery_create.php
  B: S9 _" e- Y8 u" g) B: S& |
" K. i' F3 j" A* f$ ^
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

6 K  V8 l% x* Y$ m4 `( B5 t4 R1 u三、PHP识别二维码6 I2 x- R5 N+ J0 O
1、方法一
. n" E9 C% |6 F2 R9 N; W' e& E环境需求,安装如下扩展: v, b  k% C, Q9 O
- ImageMagick7 {3 I2 Q  h: f+ q
- zbar% o8 c7 I9 S& g, e
- php-zbarcode* b9 e, {4 ]' @+ _0 W

( ~( G7 g- }' V  O2、方法二
* Z) R- y# [" v, p/ K+ pPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
1 _! X- X! B9 L; ZqrReader类:https://github.com/baagee/php_QrReader
( X2 a0 V3 A$ r- S( r0 W8 k7 S& ^7 C" O7 p( y6 J( |

  1. " z7 {" p7 Z! R5 v" A
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    . C% {3 [" Z' P* i
  3. 9 Z) D# z1 W- m. c/ S$ c0 s
  4. $text = $qrcode->text(); //返回识别后的文本9 M5 \; }) k+ A0 u
  5. : z, k, _, r% @7 J5 Z
  6. echo $text;+ v" `/ Z# S2 H+ a
  7. . l- U8 ]9 i8 M7 O1 W
  8. & O; o  ]- J: f4 {1 N% \1 @8 W
复制代码

0 O4 I2 I( h0 D9 a4 E4 A链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7$ [; m1 L4 l6 Z5 b6 Q. z6 u' a
) r: }" B! h5 U3 _

: l  ]/ z& l/ S7 u0 q, C/ L' U4 ^4 I
( o  Z1 d/ @4 }! J6 I; U% t# s; _3 Y4 d7 A/ O

) n) j  }: S- A' m& n. }  T
9 Z; I. l2 Y5 c, C9 z- T, s0 V& h7 c; v6 A0 K
! F7 H5 }5 Y6 v' C0 a+ e9 f

) Q9 l8 i3 Q8 e+ A9 Q% H7 q0 T

最新评论

GMT+8, 2024-3-2 08:37 , Processed in 0.141663 second(s), 25 queries .

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