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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

cncml手绘网 门户 查看主题

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

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

本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
1 }) U% D) q/ Y---------------------------------------------------------------------------------------------------1 u( I' O& J: k; M; e0 d7 R' F% _( z1 X
二维码的分类. m0 ]: a" ?  p" j/ D
线性堆叠式二维码! M/ u+ F" f" C- |, M+ ~- Z
$ y. i% S& j& r; H
矩阵式二维码3 n: Y; ^( R7 {2 e8 [  M' Z

2 v0 T+ \. }# O; v二维码的优缺点
; V, ~4 r1 G& K  w$ Q) `! }优点- U' ?% O, i% H1 i: J
信息容量大
2 ~4 L' C1 ]7 }' k' a8 L& H: f5 _4 h% |) S/ c+ Z
编码范围广
3 ^, o. v" C0 g- i! Q
! C5 h+ g8 C' o% V) n8 t3 j9 P" \4 J容错能力强
. H- B- s. ?% I7 f
1 l8 ^0 M9 b, R# c/ i) _$ I译码可靠性高
$ Z$ n, N1 f9 k; {6 P: r7 C3 w# ]' H* B2 S. ~
可引入加密措施  s8 }$ @6 p" R# B+ q- i; P2 U
2 L* K+ H9 x! F7 G$ m7 q) P. I
成本低,易制作
4 c6 f% }2 Z' G) m9 x+ u
, Y. l. j8 G* B: [( [, R缺点. B, f+ f- E  J
二维码技术成为手机病毒、钓鱼网站传播的新渠道& p; A( l8 B1 a: ?! S0 }

3 M/ N) Y7 B; q: o信息泄密
0 c: S) \1 k( U0 k" c$ p5 z' V5 r/ L0 z  @& A
目前流行的三大国际标准, d1 c! k' `# ]" U* u$ |0 `& W" b7 E
PDF417:不支持中文) r0 q$ F5 ~! O1 J  x2 g1 \

2 J0 y: U$ W0 J$ ^( mDM:专利未公开,需支付专利费用( P; }; ]  _' p* d  m9 ^2 }
4 x8 _% u! z& h4 b$ I
QR CODE:专利公开,支持中文# _4 k  F/ O9 B% o) _& x
" ]: m! q8 R3 \$ G3 D, N) `9 p
QR CODE 纠错能力5 e: }& o% k4 [8 G8 s2 b* E
L级:约可纠错7%的数据码字
, }6 n. c( q. U4 G9 h0 j$ P
0 U' r) U7 }& c8 m: F" FM级:约可纠错15%的数据码字
. ]1 _& n# ^5 r
, _8 A) I6 W7 w  L; ?; `% Z) Y* qQ级:约可纠错25%的数据码字) d0 w4 D$ J; S2 `1 h

3 J7 q. i) i' m+ i4 A3 a" sH级:约可纠错30%的数据码字4 Y# h, d0 m4 W* \: ]% ]

$ s7 T6 d. t1 g+ d: H& w% n; H前提条件
, N% y% g1 c( j- B3 n. ?8 W7 [GD库/ y- l5 C  j( W: a. B, s7 A7 H) I" x

: v3 E  T- f* X; c; Q一、PHP生成QR CODE
+ `) i' j1 h1 T$ m+ ?官网:http://phpqrcode.sourceforge.net/* x2 I, C+ q$ f* V: [6 z0 i

4 Q6 \" y* B" ]' F5 z4 {, n下载源码:https://github.com/endroid/qr-code, N' Z' O! n1 o7 X1 D

6 m  H3 ~& T" Y! {6 ]' C2 _目录结构  F* t& q+ p' q% Z& M6 i  m: F# Y7 i
03130c7c8ed2925e6f0fa9bf23525edb_1573193604581540.png
0 {$ O, {" m  r2 P
' K; M' g9 z% W0 q7 T1、qrcode_create.php
- V; f* }' s8 \, _ps:生成普通二维码
# B( c0 _: m) P' J9 Z
  1. * \; `+ r0 W' m0 H
  2. include_once "./qrcode/phpqrcode.php";/**
    . _. i- I' s- y& t

  3. 0 S1 `, ^; s! f6 r* h! k& ~
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径) B/ h' ]+ m+ U4 r9 P: Z* u
  5. " [0 O  ]  B! e4 L0 l  O) n
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    6 l: d. W- ^1 J. p
  7. ' x8 C* `- {/ v* B9 A
  8. */QRcode::png("abc");. W8 P4 Q4 t) s4 ?3 B/ J

  9. $ I! N0 f( l. q, G
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    , Y. ]2 i4 q' |* B

  11. ( `) t. E* o5 u" }. ~3 O/ m
  12. * 生成文件到本地5 t& u( D& |9 v# e2 [" T/ `
  13. 7 N9 [% X1 c) s5 @1 a
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    , E6 Z8 S2 _. b2 m

  15. & h% Y! j3 D& k; c# Q! u
  16. * PS:$saveandprint源码的p6参数做了修改
    . c$ Y5 A9 ]6 U& b9 ^/ ]

  17. ( D/ R0 ]1 J7 O" j  l& S$ W
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);" V3 T, Y9 g" N" a7 M# x
  19. ; P7 n  b* G- k
  20. 7 c/ R* Z3 d0 U% \" K
复制代码

. u. Z$ P5 k! @2、qrcode_logo.php
8 r4 n" y) C' h1 G1 A& m% nps:生成带Logo的二维码

  1. 7 h4 T1 {' o& J7 I
  2. /**, P& D$ n/ z5 r9 a
  3. 2 Y+ T, D# T* ?5 x
  4. * Created by PhpStorm.$ k4 u5 Y) U. A- o. r: \

  5. ' E* V8 F& a( s3 ~9 b; d% d
  6. * User: user6 D6 y* p: h5 t* i2 a5 z+ n; p
  7. : ?. \, |; M# m5 |: y! A* s
  8. * Date: 2018/8/16
    # u8 h7 w8 d( c* [+ `1 T4 T

  9. & r! ^& I$ q8 ~% W1 N
  10. * Time: 10:43
    % r8 p* O2 a# c+ t% {
  11. ! H( Z6 }+ W  ]
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    3 z& i0 \6 {9 t

  13. " s+ N; m  H' Q" y! f. d# I
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称4 \7 U# M" A9 c- P: f5 d
  15. 2 C) D5 B- o! P1 F. Q
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    0 g/ }  {# B) n2 U3 q5 T8 M

  17. 3 O* ^! J: [6 A8 v; {+ n( R  W9 J
  18. $margin = 2;//边距
    " F! {: a6 i( K" A7 r" ?3 w
  19. $ h+ [, a# s4 ^. b* p# R
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    1 W/ }; ]( e. \# l

  21.   s$ K: j* `% }  X5 U# F
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    ' }3 H6 @( ~; r5 j
  23. & R2 B: l8 f' \9 q: E
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    / v2 R- k; M& L% Z  ~1 f8 K2 Q
  25. 3 Z+ n8 i' ?% C3 x4 C7 J7 t# b( K
  26.     $Logo = './pic/logo.png';   
    7 B+ g- ~3 }5 `8 `4 J
  27. 1 a! b! K1 w/ r8 w4 L# }
  28.     $Logo_re = './pic/test_logo.png';   
    : s8 n/ I/ u$ l
  29. ; s4 J1 x. _/ l. m" d  e4 a
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   $ h% @: o* a" ?+ q, y

  31. 3 P# a% Y* N9 P  Z7 @& X
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    5 z$ j" T( M6 B- S* G: [
  33. : p& F+ P' v/ F2 Y' v; K) Z
  34.     $QR_width = imagesx($QR); //二维码图片宽度4 d4 \7 I1 a0 H5 `: R

  35. / I5 K9 h1 m0 g. a  n% l
  36.     $QR_height = imagesy($QR); //二维码图片高度
    7 C) k% N) t) t4 i, ~0 [

  37. 0 h) R2 m+ W3 s1 c7 |3 k4 U
  38.     $logo_width = imagesx($Logo); //logo图片宽度; F% q, P; _3 r. e5 [& g
  39. 8 l$ O6 K# ]$ F' t
  40.     $logo_height = imagesy($Logo); //logo图片高度
    1 Y. Y, [: S: x) a* u
  41. ; H; i% _, \+ Z8 z5 ^
  42.     $logo_qr_width = $QR_width / 5;   + q! p# b0 S7 ]7 C3 G

  43. 9 O& s- I2 w- s* x, x
  44.     $scale = $logo_width / $logo_qr_width;   5 A9 e- E8 K: M4 b: K0 r

  45. 3 d) S$ s9 @% s, Z
  46.     $logo_qr_height = $logo_height / $scale;   & W* Q  ]/ @# n# R5 o

  47. 1 x% ]! P$ M* U7 e4 ^
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    : \! J+ h4 }5 N! ?& W6 C$ X; t

  49. 9 T, |8 g+ z( x, u8 \
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    ' U2 B# I$ h' Z) r% G, [& a

  51. 9 k" D, m% s2 e
  52.     //输出图片0 W1 g  u. b( g5 h: p7 }+ [* _

  53. + ^; x7 A) p9 |6 E: K# E# t
  54.     imagepng($QR, $Logo_re);% n. q$ @  q+ l- a. q' k' ?

  55. 0 ?* k* [( H' |6 ~1 k
  56. }0 I' {5 Z# C: D$ A
  57. 2 y$ O/ n' b$ v2 B1 h/ ^' ^; o1 J  C
  58. , H4 U7 D; t+ w, j. b, k2 x' J
复制代码
3、qrcode_vcard.php (生成电子签名); K$ I+ e4 J; y% |4 n: q, m

9 n; Q& T+ ^* y9 K, r" f8 UvCard格式:https://zh.wikipedia.org/wiki/VCard# ], S" j; l1 t) B
+ m5 y, s- {1 D0 y0 n6 E  o

  1. % k- S; V8 @4 h# F4 M
  2. * Created by PhpStorm.* L9 o$ J* e6 M( X  R
  3. 6 n4 v$ q: Y4 N
  4. * User: user0 G2 T/ B8 g, m& j4 b
  5. 3 C. o/ Z& \& z; M0 C8 H
  6. * Date: 2018/8/15
    8 g7 E8 D. ?" {' J$ V# h
  7. ; A2 f) Y6 T6 M8 ~+ f
  8. * Time: 23:00
    , N3 l$ Y. r( I, I) x

  9. $ b& N5 a, X% T4 g8 ?- V
  10. */require_once "./qrcode/phpqrcode.php";/**
    4 B- l. I0 `- K0 ]# k
  11. ' B. ]: k9 u& ?7 \6 e! t" `. L
  12. * 生成电子签名2 U8 `* P& t- Z+ ~0 b' C/ c
  13. $ ]- [) S+ t4 ?% m
  14. * PS;使用微信扫描二维码
    ) w2 r/ U- ]- i, o5 r# b: b8 r$ K
  15. ) w3 @0 m2 G/ a: v/ z
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    : B# h/ m: I7 p* m  b8 R3 \6 N
  17. + B) R$ N) [7 `6 Z" q
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    ' O! ]. u3 a0 V
  19. 2 K+ D, a+ _& T4 m- H
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    ' G6 [# [  \2 ]+ d: b: b, W! M
  21. 8 b+ r/ V$ ^! h
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    5 K  A, @' G) `; b9 O5 c, A
  23.   D% d* U4 [' @' G3 j, h
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    * S1 u/ A: i$ P9 f* a
  25. ( X' @- B$ u3 G0 S( ^- v& d
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话" k+ [$ H+ p- Z
  27. / f1 q/ B- a7 n# X
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    " A: m; w4 X2 B, M9 O6 p6 u( D
  29. # I( T1 x7 a- _' s
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    5 [0 x1 J  c" H2 y% P6 e" I

  31. ( _$ E6 J# p( P4 q) E. a3 X$ G
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话' f) ]2 m) N0 {; o9 M+ p5 l; u

  33. - S9 x% ]- D, j  `6 h7 _8 y
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    7 Q0 M& A4 X; P4 Q2 w8 v1 L! d: |

  35. # Y; e  z2 C6 r, [  O6 x0 E
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    % T5 N7 b* ~& j9 `
  37. 4 b/ `. d  C8 g  v6 G0 a
  38. $content .= 'END:VCARD' . "\n";//结束标志
    * T) A& w2 e5 C2 E8 v9 x2 L

  39. , E% l' z, e2 x1 h+ v! R/ t
  40. QRcode::png($content);
    # V! R* B7 I! E3 \( b+ i2 X
  41. 1 d& D( |$ l' I; {/ n" n

  42. ) x% y( |8 z8 o$ q
复制代码
6 R! ]$ e5 @- H; f9 _9 L& ?8 @% d/ G
相关文章推荐:# T& i4 A+ f" Y, {# x
1.PHP生成微信二维码实例
: Z' w0 R  z" _1 Q+ G' P2.php网址转换生成二维码% g- h' v! K- V' Y% P
相关视频推荐:
' s& r# \) B0 p. C' \  I1.独孤九贱(4)_PHP视频教程
, h4 v5 `! x% o二、JQUERY生成QR CODE
9 n6 p/ a: R, P" n源码地址:https://github.com/jeromeetienne/jquery-qrcode
  M4 V4 f5 L' Z5 e
4 M* c2 [2 ^: I3 v+ k2 ~jquery_create.php/ ^$ K7 M+ e. \0 v( ~) F

, y. \7 K$ O: R% v1 p
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
% ?. @4 o, D3 u7 X" ^) q
三、PHP识别二维码
9 x/ Q& \- ]; B8 b0 x0 `2 W) b( ~+ l+ x1、方法一- L4 a8 W" @. @- F
环境需求,安装如下扩展0 K& L7 H- G* Z7 H$ o
- ImageMagick+ `' X, s- Y6 I$ A" M
- zbar/ p5 q# M- Q# n/ Y  V: {
- php-zbarcode
$ `% [- G2 T) f$ J/ C
2 D! b( T2 Z7 P; \2、方法二
( O6 u' q; `5 H# r( [, y/ ~% q1 ^PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
& B0 F/ A7 x8 z$ b* _qrReader类:https://github.com/baagee/php_QrReader
+ r: d4 s2 A/ S. h8 Z4 K* d# A, A$ t! g. Y4 t

  1. ! G. P1 L5 ?, Y) T# Q& ?
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径5 Z  r/ z9 O4 }5 `4 w( n" U
  3.   o2 S+ L( U- |; ]
  4. $text = $qrcode->text(); //返回识别后的文本$ W: T; [# p- g$ l% s
  5. 2 m! {; r4 O# a& L
  6. echo $text;
    " F3 R; ]3 q. ]
  7. 0 D! Y; Y* \' o5 y8 j( I$ J$ d
  8. 2 l  H) x  z# H
复制代码
9 y4 ?$ h1 ]9 b. l
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7; o3 y% u5 ?- b/ x

! N5 d$ p1 }4 a* i, f: ^! m! s
) T7 q0 S+ [& A
2 g" n. I( ]0 H3 p* m2 m8 t4 b. o: T/ [$ u
) u5 f0 s% n5 N. r/ c* d

5 z! W: d4 J1 z  v0 i- ~0 Y( I& k7 a0 K5 {- f% W. T2 v% y6 L
/ R! C; j( e1 {% J. d6 X
' X5 U. u( y3 O( e

最新评论

GMT+8, 2024-6-23 23:08 , Processed in 0.169494 second(s), 25 queries .

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