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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9935|回复: 0

[php学习资料] PHP如何实现二维码的生成以及识别(代码) ------------------...

[复制链接]
发表于 2020-7-24 00:09:21 | 显示全部楼层 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
1 @$ r/ }5 b  C5 {! q) Q7 c  F3 k6 J---------------------------------------------------------------------------------------------------! {) q) ?0 {: |& L
二维码的分类, A# L4 ]: {: H2 `1 r! }
线性堆叠式二维码$ ?2 ?4 I$ [$ G8 ~' b3 K0 |

8 b1 J. r# h" R& K' d矩阵式二维码/ O% R0 A6 H; A3 H* H4 `$ T

$ \( Q# Z  \# u5 e1 V% a8 r5 M& j二维码的优缺点
; s% w- V/ S: E4 P9 m  N$ x+ [优点
+ s8 k8 ~7 B7 ]8 X7 ~信息容量大
% {2 B- C1 x6 C( }5 i7 M  v7 U9 {; F; e; b/ o% f
编码范围广* _( F3 w0 z5 \) @& x5 e

& t+ o- p& D3 `3 Y4 [6 N  R容错能力强
$ \+ ^7 E5 e4 J6 s8 b2 C, r4 K" s
; p( N6 W( B9 y! C" b5 n* j! Q译码可靠性高, K+ T- Q: n+ m  c4 [2 H1 u

  \/ [- w; \% [( U! x可引入加密措施
6 o' ?# v0 _$ g  q* \
0 ^+ N* c! }2 H# q) R% q# _' M成本低,易制作
8 V1 H$ @) D2 }8 ~- ]# y0 g& O5 i4 d4 O4 `0 X, l$ Z
缺点
7 D0 C  d8 C' J0 C二维码技术成为手机病毒、钓鱼网站传播的新渠道
5 x: G' x. j4 ]9 S0 |# M" m+ Q; |. g# `, E
信息泄密
0 z  }/ G2 j1 `) N" ]: S+ Y% p9 f3 K0 f
目前流行的三大国际标准/ k# V+ u2 z% z6 l
PDF417:不支持中文
0 d+ H( J) @/ U0 o3 ^# a8 _5 I0 l+ A0 E, U
DM:专利未公开,需支付专利费用* q5 C# Q, J; j( d; I* s

3 M- c5 H9 L5 O0 Z( N" R+ B8 |/ pQR CODE:专利公开,支持中文
6 |4 J% V0 [8 K  O- H5 f2 L- Y! w( X
QR CODE 纠错能力- w2 v( w: P# m
L级:约可纠错7%的数据码字
) H/ u6 l* H* [  G& a5 N) ?  _( r4 }. M; Q: D
M级:约可纠错15%的数据码字
& S- x5 i2 r$ W1 Y& k7 P/ {& C& ~% `% {
Q级:约可纠错25%的数据码字( q. J: i. B: v! y

4 b1 X6 z& c: h: j" U1 [H级:约可纠错30%的数据码字
* v9 ~$ ^- g5 r$ r$ m( ]2 @( ]/ b- l+ U$ o; f0 N9 d( p& R
前提条件
- K9 ?' Y" F* zGD库* v- r4 \* y& U  V/ Y
- q& M' H7 }9 Z% x, R1 A
一、PHP生成QR CODE# p# r- T1 B( v" U& C
官网:http://phpqrcode.sourceforge.net/
  n. D1 N, d  v( d1 k( F/ G3 r; P0 H# O- v
下载源码:https://github.com/endroid/qr-code- O4 x0 e' |5 _+ Y; C: ~. p- G

. {2 z% V" T3 S/ U目录结构
  P; a  G/ D* J 03130c7c8ed2925e6f0fa9bf23525edb_1573193604581540.png
% o, b5 [+ j! `5 r6 c; i) c9 u! K
1、qrcode_create.php
+ G% k( k, }" s2 h4 ?/ r+ gps:生成普通二维码$ y: ~. o' A9 j: m9 z2 k. u+ l

  1. - i% f7 ^" e( m: J8 ]/ a
  2. include_once "./qrcode/phpqrcode.php";/**3 a5 p4 `$ V) Z" l

  3. # t: y9 R4 v3 O$ i1 l0 y) a2 g
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    * O* ]0 D3 C! `4 G% A% G
  5. $ \" R9 ]8 x3 V, ]; X  d
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    ! ?2 L2 w4 g4 m! L

  7. 0 y' I( A  L7 O5 m
  8. */QRcode::png("abc");
    2 l1 A6 N+ K, s+ P9 O2 k' A
  9. 3 I/ r/ Q0 [+ N- X( D  |, b* J4 Y
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**( D) N  |1 [/ q* w& z1 L4 N3 n

  11. ' _. w* `/ M; K. a& v# r
  12. * 生成文件到本地
    , ]9 p' f( Z- V$ Q+ I
  13.   t' y3 ?/ T: S/ Q0 M1 ?) u) H9 W
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)1 ^) }& H9 A$ X3 t6 x$ M

  15. 2 A$ y2 ~  Q7 c7 R  ^) Y" G3 D9 V
  16. * PS:$saveandprint源码的p6参数做了修改
    4 [0 O" ~, O7 q! y

  17. ; |% W# z- p2 d+ q- i  A
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    7 W$ V/ P  G* q* h

  19. 3 J/ z/ ^! |  g' W! X" `/ [
  20. % [8 g# d8 v9 |" n" _& B- Y
复制代码

8 p1 L9 `  [% d2 O9 [2 a' \2、qrcode_logo.php
/ \% t+ A' I4 [; N8 i6 B1 G: `6 |) Zps:生成带Logo的二维码
  1. 4 p. q; @3 ^9 y( y: F
  2. /**
    3 c0 I+ J4 j. G4 U, c( g4 z

  3. $ `+ h8 z: g! a1 S. c! o! c
  4. * Created by PhpStorm.
    ( }+ A# Y. R1 p0 C2 A1 t

  5. ! j3 k: V9 Q% B3 S$ ?
  6. * User: user3 K2 l  B* ?5 ]) r
  7. + c0 b( _- s; Q! Z7 D7 O
  8. * Date: 2018/8/162 n% z) ?8 _3 C

  9. 1 y# Q. @( i3 {' [  j! m/ Q8 \* s
  10. * Time: 10:43
    ' O5 X0 n, Z& N7 ?  L* F- ~
  11. 3 _$ t. M  Y  ]; Q1 F6 Z- ]% s
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";6 [( Z2 ?. G8 n
  13. 2 i2 g% c8 e1 f  F6 X# N  Y8 Z
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称& E! }, u5 T' u+ p4 P5 M
  15. - S' Q7 s' b! P
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是6 |; p& v; f' x1 S. x, B3 y9 \

  17. 6 d% s% E( ^7 b, t
  18. $margin = 2;//边距
    ' m. h3 q/ O' P) i; {8 R# P7 }' O
  19. 1 s. {$ c- h' `8 B1 N+ H
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片3 q$ A$ v9 }0 P
  21. 5 m% C/ m1 ?- V/ v% _
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    ) F' a% E' L+ \+ |; r
  23. & a  L$ D  V( z/ l- g: j! O
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    ' e4 G* I+ y: `* ~" \7 [
  25. $ O1 h' q% }9 J$ s0 B3 |
  26.     $Logo = './pic/logo.png';   
    ' k# M4 X+ R. f1 X

  27. ( ]( j. \( @* m* _0 ^, X+ ^
  28.     $Logo_re = './pic/test_logo.png';   # j: s$ \3 r7 m
  29. 6 p9 C+ ~' t: Z; n% |9 W
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   $ u3 R- \! h7 w# k9 x- k' I/ D

  31. 8 }% c: V( Z0 g' f2 ]
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   % L4 h$ D# U2 `4 n3 E6 u6 i
  33. 7 y& d: Y5 {3 T5 l2 v
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    " {8 N& Y& h) I

  35. : i- v  O% V7 R% _: O
  36.     $QR_height = imagesy($QR); //二维码图片高度
      v1 m& I, y+ H! H" F

  37. & r% E. r) z/ @- O% |
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    , K, y5 a( K; `( H) ^6 q

  39. 8 ]5 S3 k: |. n% V8 `1 D
  40.     $logo_height = imagesy($Logo); //logo图片高度" T9 i4 \' f4 w5 b5 X. D" Q
  41. / e& l0 _+ X- L  D
  42.     $logo_qr_width = $QR_width / 5;   
    ) k9 N6 S. e/ i6 W( Q, a( K% L
  43. % p7 Z8 P" ^- ^1 c8 A# w, H
  44.     $scale = $logo_width / $logo_qr_width;   - |' p5 ?# C3 Q4 N
  45. 7 s, A  L0 z4 I
  46.     $logo_qr_height = $logo_height / $scale;   
    6 B: k0 p; ]; @; H( ^: Q+ Q' A

  47. 4 C! W/ Q, d/ @) y% `
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;5 J/ u3 i/ H& r( t
  49. ' Q; e0 ?- x) }( Y; f  X8 m
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   / p3 g" w* ]+ A, I* g$ t6 \

  51. ; p! S: T7 G0 F2 F. D6 w$ C* h
  52.     //输出图片
    / m  p; D8 ]' U) B# C+ F' U
  53. ' H9 @, A/ S$ m/ t+ W( H
  54.     imagepng($QR, $Logo_re);6 ?5 n6 f  \! x5 p( U$ ~

  55. ' D* n+ @7 c5 |0 m% A/ _
  56. }
    7 b9 r# N2 r, i) A
  57. # O9 @1 g2 ~( }& {0 m
  58. 4 j+ a# P- W6 Q' o
复制代码
3、qrcode_vcard.php (生成电子签名)
/ n) w4 W7 F8 x3 t; ^$ y2 C, \& ]' n$ ~1 M2 c
vCard格式:https://zh.wikipedia.org/wiki/VCard1 h0 U" ~. e% x8 P) J3 i
- u8 v/ k/ \/ `$ r' h: ?

  1. ! `5 i5 Z, H- E7 {- _
  2. * Created by PhpStorm., |) U" l  g- q

  3. 1 _3 Y+ Q+ v6 t& R$ W& u
  4. * User: user' E# i( X4 h; F( n5 Q% }1 s

  5. 9 P) m7 v* C( I& Z; L( G7 ?  e
  6. * Date: 2018/8/15
    6 }( W$ p5 _  y

  7. # j1 i' d) F; K
  8. * Time: 23:00! T' f% n+ `% G2 H

  9. 2 [3 U1 D6 e/ O/ y! R
  10. */require_once "./qrcode/phpqrcode.php";/**
    , w9 y1 t0 i+ z6 _/ Z

  11. ' z5 `- q7 }$ l) u+ X
  12. * 生成电子签名# W1 v$ q, @  g! E1 R+ V

  13. , e2 @$ K, L0 G+ q- l
  14. * PS;使用微信扫描二维码6 d' u) D5 m5 b
  15. 5 b. X+ E0 h  F+ V) G! Y& q9 x
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志" o5 W5 D3 @& O  x) W

  17. 1 n/ u3 c2 W( r
  18. $content .= 'VERSION:2.1' . "\n";//当前版本% |8 s- \& P5 t* W
  19. + g- {* B7 @" x  C3 w
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    * y' r' v/ d8 X+ ]) c
  21. 0 j$ R  i/ m$ d
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    + j7 h& y8 H1 S- _! M5 j5 U, D! g
  23. ! m) c. N8 v1 V" \9 q# V+ ?
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    8 M; ^% d  ^$ I- J5 m

  25. / I& G0 T+ N& S' y
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话5 m% n8 u5 F2 m7 c% i, u7 N, E* [: r

  27. , r1 V( s8 l( Q( x6 b+ n7 _
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址" A: Z& @7 G' Q2 `, T! \6 h

  29. 6 l+ S. S1 ?) I5 q2 f5 P$ N
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    + O; }# f; |! H1 g4 R' Z

  31. " o- R( y- w) Y! a: ?* x2 f0 d$ G
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话9 _1 N: D. J+ p9 x& y5 G

  33. 8 t) P4 c! B6 z& K8 h8 k! i9 V4 H
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    ; n" U/ j  b1 k( r7 r' K
  35. ' ]; l9 c" i+ D- g5 l2 h" u/ E
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    ( r" a3 ~0 a$ W! U9 c4 u

  37. 4 J: B/ x; k5 a8 E3 b: C' v3 r
  38. $content .= 'END:VCARD' . "\n";//结束标志9 U& n0 k; h, K  Q+ z8 i8 M2 Y
  39. " T- ]% [1 q9 K+ F/ K
  40. QRcode::png($content);
    8 X, |, [. Y1 y  {4 y7 ?

  41. ) M3 j' Y7 o% |% ^; U( p  x( ~5 |6 M

  42. ) w9 _+ q! l+ ^
复制代码

8 U) p3 Y$ M. j/ M相关文章推荐:
( x% U' y) r: q3 d. J( o7 _2 ]9 n1.PHP生成微信二维码实例
3 h% o) O! S1 N9 z9 O& I2.php网址转换生成二维码& c2 a8 H& T. f8 b- m& Q% ~( @5 I
相关视频推荐:! W5 o: J/ G! W" f0 G
1.独孤九贱(4)_PHP视频教程
4 r, \( p$ i0 Y% S二、JQUERY生成QR CODE
+ N* l+ A* G  ^7 [2 J8 S, r源码地址:https://github.com/jeromeetienne/jquery-qrcode
& j8 v: r8 ^; w, x( g; p3 N# S7 A- P2 V, D1 Q
jquery_create.php
- U  O! `0 Z; R* ]5 i& i3 }! D2 v
) g* E: b" E5 i% X! B/ D9 |
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

1 k  p/ G# r7 A6 ]三、PHP识别二维码
& L5 J7 x$ z/ u" s1、方法一$ E0 V4 A& j; e. R# R& \3 y
环境需求,安装如下扩展
. ?8 j3 Z7 X& F9 |2 T' k- ImageMagick
8 B: N' B9 }& A( w5 S0 U! p% h9 B- zbar0 j, f: g3 T5 C) X0 V
- php-zbarcode+ s% ]  y/ o3 v9 s& [

; l8 Z$ D- p/ P2、方法二8 g' \! O# L' e2 h# K/ p
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以# n. y4 p5 c" Q
qrReader类:https://github.com/baagee/php_QrReader
4 c& z3 z3 h# N: |# O  b% t6 [; L  ?; w) ~# n
  1. % y* P! L' J: {- a; R) `8 H; g# T0 \
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    ( n3 h! ?% R  K+ Q
  3. - L  g1 }5 _, Z
  4. $text = $qrcode->text(); //返回识别后的文本
    - M5 w9 s1 c, e' V

  5. + N! G6 O5 f5 U6 g2 v3 g9 q8 W7 L
  6. echo $text;2 V1 n. F3 ^1 B$ A( m
  7. 8 j' G$ W  v, Z+ d- S% N2 Q# T1 \0 I
  8. ( Y9 W  ]' }3 t" ]3 ?
复制代码
1 t6 a6 h6 w8 L% y' S
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
; z. q6 V# {% H9 S
) W& ~0 b: r/ c2 e) g! g, @6 z$ B
2 P$ d# [0 t: o2 C; y! U
6 m4 C# m8 w4 A# J+ d0 \
3 |; u. H0 W' H
7 @4 U$ |( o( f, T
) X3 s! a9 q& g- O+ v0 b; E
2 @! Z' \, Z& v% {8 z/ l
4 i- z( g3 i% A# {
2 g: r- R+ Z4 N6 z2 y/ b
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-4-14 16:26 , Processed in 0.142916 second(s), 25 queries .

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