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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

cncml手绘网 门户 查看主题

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

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

本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。. \+ F" Q! `1 t) r8 Z2 c2 a
---------------------------------------------------------------------------------------------------" H! P- K. e1 k
二维码的分类& g% j1 D; ~  _( @/ o
线性堆叠式二维码
* E) o  c( V# f7 b& h& `* k- O' {5 d/ j5 P" P
矩阵式二维码
- I+ C5 ~9 g" L+ C! r" p8 P# o+ l( E
; M* [3 a: Y8 o0 k" N二维码的优缺点
  D* u' Q8 O9 C) V6 t. v优点
+ d' q( a8 \7 v7 ]信息容量大
' c% @- d; w7 L8 ?
3 x" U4 a2 x) @: l. C编码范围广6 a; O# [5 c2 C

# D+ [& o3 g) K. M5 K* E3 H8 b5 h5 @容错能力强0 C. V9 g: H8 ^, U- v0 N" r$ d7 D7 H

5 {, [8 z7 V/ N: b* n) T9 g译码可靠性高
5 d$ n+ p) @) |8 P2 E& h/ U4 w( \+ l9 b) |) B
可引入加密措施( s$ @- I* q6 S. F8 T" U) f( O% ~
( ^: O6 A) }" c% r
成本低,易制作
5 _) @% ~& w# Z5 D) O5 \8 o; u: j& F- K0 C% `
缺点/ _* H# t8 k$ q& v, Q( E/ |
二维码技术成为手机病毒、钓鱼网站传播的新渠道
* |7 K: |0 O# b" R3 N
, I% W" l- {- R8 |5 F信息泄密6 R1 `2 U' O* }
; G" U- x$ d  w+ c1 b
目前流行的三大国际标准% O: N8 L3 e/ D$ \
PDF417:不支持中文8 s* b: o! B4 W/ ]1 W

4 x/ `, a  j7 [: LDM:专利未公开,需支付专利费用* P  X& U# r3 A- b' O+ p3 U! i
' ]$ m+ u+ g/ f. U. H: @
QR CODE:专利公开,支持中文
& ~0 f$ y  w! Z6 {- x; n5 Z6 E5 Z: n% [0 D7 W5 ]. y* n. X; g! z0 V* r
QR CODE 纠错能力6 L: G! H. {9 K/ x5 w
L级:约可纠错7%的数据码字, ^" A% V0 y% ~2 z

  w& b, a, p) E) [" Q0 u8 |M级:约可纠错15%的数据码字
9 v+ o% R' [9 A& ^$ @$ w$ f' o+ u1 g7 l: _0 W
Q级:约可纠错25%的数据码字4 O5 h2 H( b* l2 A6 \$ G6 H
! K5 }4 A1 |, s) f, V- l# B
H级:约可纠错30%的数据码字& q2 A# E7 f9 _) ?

$ O9 \# R6 x: o% I& {前提条件  F4 X/ |/ v; `/ f
GD库
2 z5 _2 E: G0 U+ b! q, k% F% r4 v1 |' G- b5 a4 r1 X
一、PHP生成QR CODE
9 p" b% w% m( v) |$ h官网:http://phpqrcode.sourceforge.net/
7 O  r( F) v5 ^) E) T7 ?( `# I
& L& p& x( p, ^$ R# Q8 Y下载源码:https://github.com/endroid/qr-code; o$ S$ ^9 r: O; _
. j$ Y  W+ e0 X" }  o, {9 l
目录结构+ e$ i' j1 S" E7 i9 B
03130c7c8ed2925e6f0fa9bf23525edb_1573193604581540.png
4 V! S0 d, E/ [9 H
5 C. V% e- ?% u$ I+ P" R4 @' G1、qrcode_create.php
7 U+ @  p+ J% Q2 _- B4 Jps:生成普通二维码
9 T1 k. u* u: R$ r5 y1 i0 |8 s7 n
  1. + P9 K" F- s! D3 u4 V
  2. include_once "./qrcode/phpqrcode.php";/**# \% s, \" }/ H9 ^

  3. , Y$ U1 {4 l' J# a$ X. J" }
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径: l: x- k: J) u. c& d# U
  5. 4 G7 a# F- E* a5 n( s. {: k& l
  6. * 在浏览器上直接生成一个二维码(内容为abc)- K" ]% O! }, G' r9 L. u, Y

  7. 5 B9 H3 v2 V' G8 d% H4 Y( ]; k
  8. */QRcode::png("abc");5 P$ q, V& z5 l0 i$ a1 c; H

  9. - o+ q) U! p: T( x8 S+ x' z% G' c
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**2 J1 G6 y% C$ g+ ~) H
  11. 1 n7 j7 s* C" G+ h
  12. * 生成文件到本地, w8 l) Z, j+ }( N9 F

  13. ! v2 ]& b; k( Q4 E! v
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)5 Y# a7 q% r# ]* M  y$ b
  15. 8 ?8 N$ z: S4 T! ?
  16. * PS:$saveandprint源码的p6参数做了修改
    2 {8 E" g3 X, Z0 `- K
  17. " D( ~* ^1 [6 _* f
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);% @& _& ]% W4 v. L

  19. 7 l! I% g8 e* F( m) e0 j

  20. , B( I  h9 ~1 r! P
复制代码
1 ]$ y8 ^$ ?0 K( [5 B1 k3 q
2、qrcode_logo.php4 h2 L8 }3 d  J7 q  d6 h: i
ps:生成带Logo的二维码
  1. $ ~) O! @% U" a% J* \& @
  2. /*** V) d  g1 W0 y: f4 z

  3. $ w5 t! d9 k. z$ H
  4. * Created by PhpStorm.
    , F0 N' ~# H6 Y( z+ Y

  5. - g% J  e8 t! M8 G0 V. X$ C
  6. * User: user# a! w* i" q. l. j2 d

  7. - w$ u4 I: ]. ?
  8. * Date: 2018/8/16& ]5 F4 B  r6 U

  9. * Q& C& A! r6 V. e7 n5 o" R
  10. * Time: 10:43
    , b+ a# z; p2 q# [1 U
  11. * u# _4 P7 I) Y% A. T* y9 N4 X
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    " T/ e: J) n9 l. j& Q4 f" v9 l

  13. 2 g' [0 P5 a; v" P7 s) Y
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    6 b* ]- S# C* \6 N8 X

  15. ( d* B: {5 Q: I$ G
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是, Z' Y% [7 s% l" M

  17. $ N/ u. s/ ^3 ~+ C0 u
  18. $margin = 2;//边距2 @" m# L4 k& O0 Q

  19. 6 `: A' c: g+ h( P+ _
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    4 g+ e+ D  }7 y

  21. 8 v5 _( }8 t; j% h% V1 B
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   6 D; Z7 L3 {6 J' x3 J+ @/ ~: _; z; c

  23. 8 ^' E  `5 d+ d  j7 z
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    # A7 x% j# ^4 R1 j  f% C; Y0 Y
  25. 1 y4 c' _1 D/ K. F, u9 i& p: L
  26.     $Logo = './pic/logo.png';   
    " S  E- R6 y( Y5 g2 w

  27. 6 J3 ^! F' o' d
  28.     $Logo_re = './pic/test_logo.png';   $ P% k- [  s# f' M' B! d

  29. . l& N! W+ o( W
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    6 f1 @: u1 l0 d
  31. + ~2 }. `! \: z* @5 n' x, Z
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    # f0 W0 b  Q' ?1 x
  33. $ ^' u; [+ E  I! n
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    5 X" J  j: A2 p' {

  35. % q* g4 L- b5 ]: m$ \
  36.     $QR_height = imagesy($QR); //二维码图片高度1 K" _% S! ~: o0 _$ v% [1 |# Q* x& T
  37. , `5 X# p8 z7 C5 N7 r
  38.     $logo_width = imagesx($Logo); //logo图片宽度9 U9 Q* F' {( |# B9 _3 D6 ~+ N/ |
  39. ; s' W& D* _  z, G( |& A& U+ J0 c
  40.     $logo_height = imagesy($Logo); //logo图片高度
    3 k* E( k# y4 C$ B& {, f( f

  41. + R- E  s9 o2 ^
  42.     $logo_qr_width = $QR_width / 5;   / n( g9 w- ~( a7 c6 v# A4 r$ q5 ~: K% _
  43. 9 Y! K  s, q' T2 ~/ J. {* \
  44.     $scale = $logo_width / $logo_qr_width;   ! u/ J% p: I; C8 G

  45. % X* X' D! q% x4 T
  46.     $logo_qr_height = $logo_height / $scale;   
    . ?7 b7 Q% [6 D* c/ P8 X$ X+ D
  47. 6 e" Z% o7 U& }: b; x/ b! n# N% a; A
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;" A! n% T: o" S* A

  49. " P: ~) i. G: h# \
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   9 j! n: a1 U) ?
  51. ( ^3 c1 B$ R2 v: W
  52.     //输出图片. U4 m! {0 L( I! X. E0 G

  53. 8 `9 {* O- `9 x! A6 e% o6 u
  54.     imagepng($QR, $Logo_re);
    4 S* J# {  O: J. P+ K3 s3 f% V
  55. 7 d, }) G+ n& O; o
  56. }
    & d) K5 Z  |) M3 q, X8 L* k
  57. ! y# B3 m2 z4 z5 q4 ^
  58. , c" v3 ]0 e2 _6 @& F
复制代码
3、qrcode_vcard.php (生成电子签名)" ?- j- ~8 `) O0 j2 N, f( }  N+ i

& u  }, u; I' `2 [% B: J$ DvCard格式:https://zh.wikipedia.org/wiki/VCard& i2 L3 s7 X4 q
; D3 S0 U6 ~7 e' p+ ]9 [
  1. 8 p3 j- @/ F% V; f5 t$ @
  2. * Created by PhpStorm.# O+ W) R# ]8 l4 k1 w- U
  3. 4 a* \) @) `- y2 Y
  4. * User: user
    6 H1 H. T, \; F( c. a, V3 Y' M
  5. & f; d( L2 ]+ B$ D
  6. * Date: 2018/8/15
    5 O5 [& f, B! ]" @7 h, U0 {
  7. % {; F+ ?5 O; |  O6 C0 f, j& o
  8. * Time: 23:004 g9 _) L/ H/ ?2 s! \7 I8 A" Z

  9. & |# Z* s2 F' A4 R8 H
  10. */require_once "./qrcode/phpqrcode.php";/**) `* m9 c1 C. \. c- ^4 S
  11. 3 K9 X  v$ A- _8 _& i
  12. * 生成电子签名
    1 ?  `$ n0 T+ q. \' b

  13. 0 i- `4 k. F+ Q5 M0 ]
  14. * PS;使用微信扫描二维码
    8 l0 A( \/ V$ P, ~8 D: U( H$ s

  15. ! \. E  }  S7 C4 `6 A
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志5 J% ^$ l0 ^: ~; d( q  `7 x
  17. 3 |/ b, t0 I- w( P- v. X- m1 z
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    0 i5 b& A( {% Y  ^1 u) M6 Q1 u: F8 ~! `

  19. $ A' V* R, X7 `8 S
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名% @, g$ a1 i) H5 Y- ?- H5 u

  21. , x# ^/ m0 Z8 Z2 W% G
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称+ w0 D, u: _5 f& ^5 n

  23. ; e# w& B* u1 p6 u5 X. W/ T5 J
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    7 R; Q( m/ H/ p- c

  25. 8 E% X# }; Y; K) V; X2 C- r4 q
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    + P; H3 w" D' ~5 E- H
  27. / a- S! y, W% d1 v+ T# a
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址* K( ^2 \$ k0 k4 Y6 e( f8 l
  29. ) X: U' |, A. v& A0 E* c
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    $ j. V7 g$ X: ?- m
  31. & ~  a$ k) q: x, k4 ^, J4 h
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    " C% C' G( U2 _: o
  33. 8 U! M4 [% O: L* b0 `) ]
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱: R, ~9 z3 n- G* N

  35. ) R& _" s+ b5 V  Y, R+ A' z1 m4 q
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页1 q, F" \6 y: A/ m: o. v

  37. ) o8 C# ~9 e( Y- N* l% X7 K0 i
  38. $content .= 'END:VCARD' . "\n";//结束标志
    4 r& u3 q' A8 S' u1 D

  39. 0 c; T/ w7 n- m- H  T
  40. QRcode::png($content);
    6 K/ o& `# ~# w0 d* o

  41.   M2 K' H4 o( b8 L+ C% h% i
  42. 4 {6 R; T" G: U" _
复制代码
! D# B5 o( k* `3 m3 G
相关文章推荐:# `/ a5 @3 X: O* x% t( N  Q
1.PHP生成微信二维码实例& T( ~8 o! R0 t
2.php网址转换生成二维码
* ]5 r7 `: x/ O8 ^7 K1 I! N相关视频推荐:
: K( s' \. v# u1.独孤九贱(4)_PHP视频教程
' ~' T8 [' x' t5 H+ N) q4 S0 u二、JQUERY生成QR CODE
8 |$ g1 O, A6 z: M7 A源码地址:https://github.com/jeromeetienne/jquery-qrcode$ Y$ U' u, t6 D8 j) j  Y7 r
: j6 L7 p0 i; R5 w$ U
jquery_create.php
' x  i" ^. W- u/ o9 V' I5 N2 P; l
; I: I6 x& t: h0 C' y. A
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

* R# ?: c# J# b) r/ f0 y+ h三、PHP识别二维码
2 t0 @6 R" B7 X6 y$ D0 i/ F6 V, D1、方法一, G+ S/ }" @+ ]0 v! L$ N3 r6 D
环境需求,安装如下扩展* ~$ b& S! a) a8 ~8 \
- ImageMagick2 K) O) {, U: n6 `$ h& z! }$ U$ Q
- zbar
- S- }9 ]$ m* j- php-zbarcode- ?5 U' T5 o( v" U

( A4 I/ ?2 ?# t0 @# m  O2、方法二. b/ e4 d) O3 ?4 W
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
( h' t( m( }" nqrReader类:https://github.com/baagee/php_QrReader" ~+ w% U7 w" B, l8 Z4 Z
! q( W, b- {% h. ?( S- n
  1. ' C9 V9 t$ w1 m
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径) U2 g! U6 Q; F& _& P5 V3 Q5 r4 q
  3. 0 r) v* ^/ F% O$ \5 N( ]) b
  4. $text = $qrcode->text(); //返回识别后的文本
    9 w9 B- k9 k( v, I2 ]+ W/ q: H
  5. 2 b0 h/ o/ x% L& m. v' y/ T* n# j
  6. echo $text;
    ) ?6 K0 ?* U* A; w! r, y8 L

  7. - }8 `+ R2 o' c5 {. |5 q5 j) Y
  8. 3 |2 z/ z2 u6 Y8 w
复制代码
6 N' ]1 {9 C/ o
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7/ Z2 t; e. U$ ^) _7 K; W
2 p. p  [* z* C: S

$ n+ p- {- q3 v& B' i( {( \1 X% H
! i, ]% R* E  N8 `% I: h' z2 H
) B  q9 Q: E0 f3 U  ^! I* j5 W" T5 `- z6 x8 J' i) j

( `- N, u, J' x6 c0 M9 F7 k8 y) d$ C4 i1 M

" X# u. k( o$ H, P% g% n
: u7 N5 z- g8 h# g4 I5 P

最新评论

GMT+8, 2023-3-28 12:50 , Processed in 0.135838 second(s), 23 queries .

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