cncml手绘网

标题: PHP如何实现二维码的生成以及识别(代码) ------------------... [打印本页]

作者: admin    时间: 2020-7-24 00:09
标题: PHP如何实现二维码的生成以及识别(代码) ------------------...
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。; Q1 I3 {: L: n$ O3 F' z- z
---------------------------------------------------------------------------------------------------" Y/ s, x5 L$ ~* S3 N8 U
二维码的分类
4 r$ O. o6 u2 e  q+ V% A( h4 f! u线性堆叠式二维码
. w) w! G% F; K9 E/ Q8 m
  f6 m0 r0 v) X+ c1 r矩阵式二维码, f/ I  p) u" T' Y4 `2 _

3 z1 K( V: Z$ ~2 q二维码的优缺点
6 u5 [$ `( @) b8 p& _+ o" c" x优点% y% Y- A$ {7 Q' m3 R
信息容量大% J  R! L4 F; a

; k, R& q, M) s4 q) J编码范围广
# B5 y- t# g: |3 H1 w  l; b4 ?: |
容错能力强5 d1 X& J7 s( i
1 o: t4 G; T. R: S
译码可靠性高
: B' P  |) \  u" `; Y( K( D0 o  R: F' r1 S
可引入加密措施
" \) u0 o0 U8 L9 E7 u+ ~6 J" h1 U, e2 ^& s4 B. K
成本低,易制作
) ^$ y' Q& p- F- v1 M
8 `' b! U9 ]! U( z- E; H缺点0 v- Q5 d! F7 q  E( b; I/ a- s
二维码技术成为手机病毒、钓鱼网站传播的新渠道
& B0 ]2 e9 z. }8 z, N0 m1 J$ E  t9 U' y6 c6 W
信息泄密9 O' j7 Z) p- f
/ y3 j) {) z  H
目前流行的三大国际标准
/ X' a; k9 {0 t, x, [PDF417:不支持中文
# E* l4 }, q: N% A/ u8 g4 h$ B
$ [$ f1 J0 [0 i7 IDM:专利未公开,需支付专利费用9 L: r. I8 ~. B5 [

( H% t* b( q) A; wQR CODE:专利公开,支持中文
8 D' R( N, B  e" a
2 X+ o; Z8 Q9 D0 N2 O4 |7 I3 W! N% J( ~$ oQR CODE 纠错能力
* \8 ?* e9 b) s* f0 J& {, ?L级:约可纠错7%的数据码字: _$ X1 C9 A1 @. ]4 Q0 g# {3 @
5 v! J) ?& |/ ?+ |* h9 q
M级:约可纠错15%的数据码字  ?7 R# m% n2 l2 N4 U  V- a2 o
9 p# }9 J* v' o# _$ `* o+ l' Z
Q级:约可纠错25%的数据码字
9 `! G2 V6 Z% ]/ ]) ~* y& d6 X* _5 J# y! z: l! t$ K/ w
H级:约可纠错30%的数据码字3 q3 [1 x- Z1 D, n1 N& k6 d
+ U: C, e6 b5 ^9 Y6 \# X+ G* l
前提条件
( M/ M/ N! T$ z& ?GD库
# C6 l9 N. i( {$ x4 A3 W% u$ Y  ~, b& p
一、PHP生成QR CODE. k4 T+ U2 q- G9 C
官网:http://phpqrcode.sourceforge.net/
8 |5 I( a' [  q! r4 S
" q+ F; }0 z+ v下载源码:https://github.com/endroid/qr-code$ w4 k- J  b( k: D) J

6 v1 n  s) t( X+ n' B4 P; {* G# Y+ P目录结构
+ @' v$ |% H+ ^ ) l# ~( @" e  O3 y: m+ H

- ~) r: ^( e; Y0 s+ L2 o. ?1、qrcode_create.php5 X7 |/ }5 x; f
ps:生成普通二维码
+ B9 n2 h: O) \- v, W

  1. 5 v' C7 N2 b, ~2 M7 T
  2. include_once "./qrcode/phpqrcode.php";/**
    ! `: Y+ s1 f1 Z" d: ^3 x- }! _
  3. " ]- D5 h( F9 o( [$ \
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径5 w1 p: ~, P4 z% c% H9 e9 u

  5. / v1 U, i" e6 G8 |( s* Z
  6. * 在浏览器上直接生成一个二维码(内容为abc)/ j( }  H( l1 i* y% ?$ {( k

  7. " G8 }1 T0 B' q( E$ ?( P) K. A
  8. */QRcode::png("abc");
    3 z3 G9 F1 E+ O% b  I: y

  9. , @& @/ I' w; I- B* X
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**5 ^( d9 u1 x% h' f
  11. 6 S* T) i3 ?: \
  12. * 生成文件到本地
      ~) P  i  x9 `4 w0 G* S  [3 d
  13. 0 N; @! y; e! c- X
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    7 |0 B$ ?& g  H5 R( A
  15. / X! C# ~" f. _& e
  16. * PS:$saveandprint源码的p6参数做了修改4 b' l( A. l, N2 O  ~7 Y
  17. 2 v6 S7 F/ L) E
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    / L9 R3 ]; ]+ m/ V$ N- h! m, p

  19. 6 S% x2 ^( G7 D/ Q7 j# {: v4 n# m- J

  20. 6 B4 O+ c; \$ P- e. e9 y5 f" b
复制代码

& q* z( P5 o2 B( @- N2、qrcode_logo.php7 G/ N: J- S% k
ps:生成带Logo的二维码
  1.   @  N+ y7 p4 q+ l) U) l4 n3 l: ~8 S
  2. /**
    $ c' E+ ]; G* a. I/ @' l

  3. 9 y  v7 t$ Q2 M) K5 |
  4. * Created by PhpStorm.6 c6 U4 i% Y1 o! B6 G1 j1 l; R

  5. ; b5 i3 Q8 O: c: O
  6. * User: user6 C" S- N+ N$ @- X. M) B. |
  7. ) T% o& R5 X* X
  8. * Date: 2018/8/16$ L: [0 [: N* ~

  9. * Q" w# S% \5 h# _4 x: c+ B
  10. * Time: 10:437 w# ~  O" m4 u" Q- P6 @4 R+ c
  11. ( a+ U% X6 F) U5 g  C& T
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    + y5 t0 c7 j% X* N9 g/ s

  13. ' R' k, X, E( v, D
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    ' @; }6 e. h, L1 h

  15. # w7 m: \4 W& W* X3 ~
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    * W% F  y+ o6 J. X' p

  17.   X4 U+ c  \$ ]4 U( C
  18. $margin = 2;//边距7 P& j2 V" z8 x' F

  19. 8 _9 o/ E: Y8 g: \
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片6 m8 f- ?& U: S& R- W, L

  21. ; ?4 b4 U9 D% F: |+ b
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   6 x' ^! @+ q& I( Q4 r3 D
  23. + w+ q. i2 b/ _
  24. $QR = $picPathAndName; //已经生成的原始二维码图, h% t4 t$ @8 N3 Q! ?! f$ o4 f
  25. . N! E2 E9 B; K$ Y6 v
  26.     $Logo = './pic/logo.png';   5 J: R! P( K/ `3 `0 g5 i

  27. % ~) i( m, s6 \3 M, p  P
  28.     $Logo_re = './pic/test_logo.png';   
    ) J% ^) }8 ]( }8 J

  29. & U8 K1 m! C- C8 {: |
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    " o+ |; a% L2 _3 C6 H% Z& M
  31. . w  n6 u) Q& `3 V
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    4 ~+ m) c% G8 Z8 |$ w0 Y' z
  33. 9 n' R  X* Q- i! ?% O) Y8 N; c
  34.     $QR_width = imagesx($QR); //二维码图片宽度7 u# p! p! j- i
  35. 0 k. G: L2 p# R: h9 w7 p, {3 D& J
  36.     $QR_height = imagesy($QR); //二维码图片高度; `6 Y2 e7 {( ~& z- g6 [

  37. ; {* s2 K" U  J+ o
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    $ _  S9 {7 N& {5 ]) g" x* h0 s
  39. . q6 S2 y) B0 k5 H. |
  40.     $logo_height = imagesy($Logo); //logo图片高度
    / M5 |7 w, F/ _) x
  41. & ?0 Z7 G% a- I5 ^: J  Q( a; W
  42.     $logo_qr_width = $QR_width / 5;   
    + l: q* o8 f; O$ K& |# z  W( D

  43. 4 V8 ]' W! |$ o. ]8 P/ L
  44.     $scale = $logo_width / $logo_qr_width;   
    : D6 N) o1 W3 M% [; K
  45. 5 _" I0 b) I8 _, ]/ s) \( S; l
  46.     $logo_qr_height = $logo_height / $scale;   
    3 R4 A; C$ U8 D

  47. 3 a5 f) }- P& K. O! \$ v: Q. i  u
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    $ x" l* j5 A5 @7 ~" p
  49. - n; Y- d, q. A. d
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    1 N; z- q6 [# U0 o
  51. 7 z% a6 }) S, m7 d4 f6 r' b# U
  52.     //输出图片/ l- k0 y- `- T' f7 w3 R

  53. 5 d6 c6 k% r' H* d( h+ i
  54.     imagepng($QR, $Logo_re);
    ; T: k3 @1 G8 u% X7 p
  55. ( e/ G5 M/ I+ f2 f. N: j
  56. }
    ( ~' O) p6 _, k2 D. S: o
  57. 5 s4 L. t' o2 G  c* o/ b% y

  58. 5 p/ f" h) m& }
复制代码
3、qrcode_vcard.php (生成电子签名)$ y' q$ A: @9 f; o- z( M: \
0 F1 `5 ^' D1 z" T
vCard格式:https://zh.wikipedia.org/wiki/VCard' J! ^$ ]. P% m2 u2 n  A

; t% d( a+ y* I; n

  1.   Q; A; Y  h8 [1 u9 G
  2. * Created by PhpStorm.
    2 p. I! \& t8 O8 f
  3. 7 e* s/ J4 I( X( s! w9 r4 b8 k" J
  4. * User: user5 u8 _* s' A0 Z% ^+ B8 L9 a; d! I

  5. * E8 d' R& b8 G+ q/ X, k
  6. * Date: 2018/8/15- B, r/ I( ^4 u# ]! o9 X# a
  7. % e- b' y8 M/ |+ b0 g/ ~" A& _
  8. * Time: 23:00
    ( b4 F2 ^/ _; v1 F4 ]# W2 R$ X7 K
  9. 8 y% K; I  C! ~* ?# V. ^
  10. */require_once "./qrcode/phpqrcode.php";/**
    ' n$ ]% d" d, u4 S9 Z2 k: Q
  11. ( I) s* V. N+ z: S2 P
  12. * 生成电子签名) h1 e! V! j8 D( T2 a6 a; Z! [

  13. $ O$ M; E# E" F" S5 O* O% W4 P
  14. * PS;使用微信扫描二维码& j* E5 f0 `1 T- C
  15. 3 W5 e& C4 {; F  `8 K  V& j
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    0 p- G6 u; ^& m9 |* d
  17. + \- F$ _- V+ i: h* ]
  18. $content .= 'VERSION:2.1' . "\n";//当前版本  C5 U1 p8 Q7 S
  19. , J0 ^& j# C. G( `& o
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名4 c( Q4 W+ Z; W% V; Y3 x% e

  21.   L/ a& x: P& H! {
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    6 B1 ^1 [' e. Y* |

  23. ( S3 k/ ], K% U
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位+ s" `+ u4 v7 f- q! ^
  25. 2 Y7 p9 }; G; w. r4 T, ^9 [
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    , b9 [: u; g. A4 {
  27. 5 x- v& [6 b- j  u9 v! A, s
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    - ~8 |4 X7 M8 b) y* p2 _

  29. / x# Z) t1 y" R; e" J
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)4 O% \" ~/ q  q2 C( j

  31. 6 o8 {) l! V6 A0 z) Z% i
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    8 n- X1 L8 A7 {; y) a4 V) v# w
  33. 7 x/ ^8 q9 W) i7 d. q0 s! D% f
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱; ], h! H9 a" {

  35. 6 Z* R. ]# H( R9 ^  d/ F, T9 x
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    7 _+ Y: j, B/ e9 L
  37. ) [1 M( B) n3 X: m" x' O8 K
  38. $content .= 'END:VCARD' . "\n";//结束标志
    ' b$ J$ x7 ?; C% p1 i

  39. , ^" w7 l6 o2 x- s7 T- Z* p
  40. QRcode::png($content);
    4 g& T! t$ b% v2 J

  41. 1 _0 R7 A( l2 B

  42. + u2 _1 Q' ?% |5 b. H# T  a! @4 ?
复制代码
  w& A; A/ N% N' L# D% U; |$ |
相关文章推荐:
- @# m* [; q, @! |$ m/ @& e& M) m1.PHP生成微信二维码实例; G4 @, P& w. R7 z
2.php网址转换生成二维码
* G$ ^- Z4 k8 o7 `: `  @- s1 R/ l相关视频推荐:
; \& T: O; {# Y3 j  ]% B3 ~  E1.独孤九贱(4)_PHP视频教程4 L% g6 U& o7 X1 V) c& F+ ?
二、JQUERY生成QR CODE
) _1 a- }/ y! P# F* H0 N  p源码地址:https://github.com/jeromeetienne/jquery-qrcode3 E* U+ [, U4 I. ?+ A+ }
/ u, K8 F9 e, ~8 L
jquery_create.php
# B4 _% t/ P: M7 Q" p) y& [% b. L( j- X7 c4 u
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

1 q# U' G) S+ C, t! M. \$ |三、PHP识别二维码
7 Q3 F4 N  g, c0 @0 Y1、方法一' c& S, G1 `: }2 R7 ^
环境需求,安装如下扩展$ S( V# q) F1 [* N$ x& Y: [
- ImageMagick
) f. _8 u! W( ~7 ~& L% P- zbar6 `0 z8 M; S0 e5 l# ?& j
- php-zbarcode3 ]" H+ m7 p' C3 Z6 m# e
* v# p6 s& H" I3 h
2、方法二
& |4 r# S) T0 F$ PPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以4 g. r: U/ p$ b0 y$ t9 B5 x
qrReader类:https://github.com/baagee/php_QrReader
; U, _: b( J/ J, M
' e2 O2 h  {$ [
  1. 1 \7 E% X0 f" B
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    8 [* p! f1 i8 |, g: Q& \/ k5 F4 h
  3. $ B1 L- Y2 s3 u$ e
  4. $text = $qrcode->text(); //返回识别后的文本1 y' g. Q8 `/ p" [
  5. 1 x2 p( G! I; o  O+ x9 y
  6. echo $text;) Y4 f5 B) u! q, P& f# W
  7. . _% H0 _6 j5 t8 I( T) u7 l7 \
  8. ! J/ F; b7 ?$ B' c
复制代码
# b, g8 m5 I0 e) p+ O0 u0 h9 m
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
- M( Q5 W+ i( ?6 R4 M& N; y7 z5 Q
, ~8 F/ P" I+ b$ `7 g. p+ Y* U/ \9 e& E! H; h) N" v
" N# {5 y+ e" O# a5 i# B

& q: \! @+ X- d; r6 n3 `: i! V! P9 E" ^. r' a% ]

! g; C* H: P8 V) @' _/ ~8 ^/ e8 ?0 ~" c& R- r

6 S3 _/ ?& `: Y. i
  M" @, v3 s7 E+ `. e, ^; V1 J




欢迎光临 cncml手绘网 (http://bbs.cncml.com/) Powered by Discuz! X3.2