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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

cncml手绘网 › 门户 › 查看主题

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

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

本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
4 s9 {6 `7 o7 P6 ]6 N. b% Z/ \---------------------------------------------------------------------------------------------------
8 D/ V* }! x( J4 q二维码的分类
6 I# v- [- K( @- x$ p) R4 E线性堆叠式二维码& x$ p- ^/ {* v$ i6 F1 {0 u

4 J( o+ u7 f! Y* E矩阵式二维码
' H2 w7 W" q/ }- y2 g, N( c1 ^( u* c% r2 @( C9 x* C9 C8 C
二维码的优缺点
- ]* @& t) W; r2 y" _: Q优点
/ H# Q( m9 f$ ?信息容量大+ E$ D4 Y) `$ R. ]

( y: @: K) v/ W0 x1 Q* C编码范围广) M) C) [0 B0 K: K! K# i

, ]+ {8 ~! ^8 `! D容错能力强
( j* \& M8 M3 I& J% S7 I# @2 _4 \5 f+ e+ j7 e9 f8 f+ R3 l
译码可靠性高
) E* \# v( c7 O. m: Z, y8 z, g8 Q1 P0 H- g& @
可引入加密措施0 h2 \% p2 K$ S* ^
1 ~) b1 z0 H4 C! W
成本低,易制作
. w9 M5 W; I6 R, S% H! w5 z3 R8 Y! y* t
缺点9 w, M! u7 y: o! L' [8 |6 w; X
二维码技术成为手机病毒、钓鱼网站传播的新渠道
. s7 P; s. ]( l: T* d0 x+ _; U2 u- ^& y, Y6 v
信息泄密
) ?* A/ X7 k. c0 c/ ]1 Q& }7 e# Y9 K! ^3 C7 N
目前流行的三大国际标准
( B) ]) o, e3 r* XPDF417:不支持中文' e+ M3 |( E* W6 }

' {( X, b/ U7 A9 O% m7 YDM:专利未公开,需支付专利费用# ~! l6 k* Y4 j! o2 `# H
+ ^4 S4 y& J- |/ @* Y: o# }
QR CODE:专利公开,支持中文4 x" `" f8 q6 b" v) b) `7 d

  U9 j! ^0 {7 r2 g5 }( R! QQR CODE 纠错能力9 J2 t0 i8 u  e" r
L级:约可纠错7%的数据码字
6 }. y  N6 G, [. s2 Z8 S! }/ @/ Q! S% O4 B  D3 `
M级:约可纠错15%的数据码字
8 m; s, a; r7 Y+ P8 h. [* q0 {. d0 P1 {% h( z- T, a! n
Q级:约可纠错25%的数据码字
) _- F- I$ p! w# B: O4 u# ]' G2 b5 ^+ E0 c. s- n+ b
H级:约可纠错30%的数据码字
6 h7 \0 J* Q' k3 j7 _9 g$ F* J+ @6 o' `0 u! T
前提条件/ ~) t! u' b7 e+ T& ]
GD库
2 \! u% i6 ^0 G7 B4 g5 h0 p/ U
5 w3 `8 u0 F: w5 p6 j  M* p一、PHP生成QR CODE! a& R" S3 H  `8 s
官网:http://phpqrcode.sourceforge.net/
+ ^  i! W/ t/ k5 ?: Y# }3 o$ s2 @3 n
  D& A: V. k+ O3 [5 j& W下载源码:https://github.com/endroid/qr-code2 U5 J' H: A0 J3 W* j

7 G- `" s4 W* j0 S- b! I4 r目录结构) D" v" H: v+ W. b; ]
03130c7c8ed2925e6f0fa9bf23525edb_1573193604581540.png
9 r5 `6 d- \1 D% G0 V+ I8 y5 h2 h
0 g6 W& W1 }* ]) s$ k1、qrcode_create.php
3 F$ i8 f- Y9 H- nps:生成普通二维码! j8 ~4 ~2 a) r7 k

  1. " d0 I9 g% w5 S( G$ O
  2. include_once "./qrcode/phpqrcode.php";/**
    ; i+ y: J) u# @' r" l0 r
  3. ( `0 Z5 S/ h4 p- b! Y" S
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    ; N) m2 M: a4 I: ?
  5. & p# h1 c2 @8 |
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    6 b7 T. [/ a" r5 j5 `

  7. 9 P# L& T0 r; k+ d) A) w
  8. */QRcode::png("abc");9 t8 N& m* `" K9 u5 l

  9.   F: }$ ]" `: y+ Y$ ^" J3 Q1 T
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**) u' d/ @5 _9 y6 l1 F+ x
  11. 3 k0 w3 f& U- @6 Y0 U
  12. * 生成文件到本地
    0 f8 R& @# a, Z2 y& N) a
  13. , L* i* B" s8 H& e: I& F2 Q
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    4 u) \6 |9 a" y6 ]. u6 {

  15. - D. M. W& C* a- i9 i+ T& I- G
  16. * PS:$saveandprint源码的p6参数做了修改
    1 a. m- l, Y& [
  17. " x& s7 I, [$ w9 |7 K* ^$ m/ h( Q
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);3 c% n) Y( s2 F; v9 @' E

  19. ( U0 F& z4 V% L6 x! r
  20. 4 A; v/ T9 g. h, `
复制代码

, y5 E% c- r5 }! w+ c+ u; e0 y' p2 p. L2、qrcode_logo.php
0 F8 a0 Z6 r/ ^8 t8 ops:生成带Logo的二维码
  1. 4 r6 q- @9 [2 Y3 `( M: g
  2. /**
    ( D$ p; L% M) X' E

  3. + @7 v& D2 o: t+ X) {4 ^7 \4 D5 {
  4. * Created by PhpStorm.
    ( V9 S1 `+ g4 y4 }) ]+ F
  5. * P+ S" L0 I) X" H$ o
  6. * User: user
    ' i* m% }( }& T  S$ l. }
  7. 6 ~6 g, E' g3 u5 ?
  8. * Date: 2018/8/169 P. R$ l; h: C: m7 Q& D

  9.   G/ T  `5 p, s: q1 s
  10. * Time: 10:435 f) b2 z0 P7 ^
  11. . t, c1 }. p# x: k3 `; n: e2 s# q
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    . c3 M& P; }# h8 ?
  13. 8 f7 y! \7 K8 @0 J
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称  S& T% O( ?8 m. K4 y5 q
  15. 1 P! {4 U  T4 {
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    , Q/ P6 b1 Y) e+ r+ E% |& P- g

  17. ( @- z/ }6 m% P6 @9 |% Q7 R) W% Z) A
  18. $margin = 2;//边距
    7 z) L- X2 V  l' w% V8 B
  19. . e* W. o/ V- ?( N; P) w
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    $ g+ ?4 t, E) v5 K" R

  21. ; S* M+ c7 l' s" z7 q
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    2 ^: R0 h4 [! `

  23. & o3 m) Z& B0 T% ]; @  d6 O0 ?
  24. $QR = $picPathAndName; //已经生成的原始二维码图2 K! Y* x2 N4 o8 ^: {
  25. 5 J, o5 |% K/ ?1 C/ ^0 t9 h- J
  26.     $Logo = './pic/logo.png';   
    $ O+ V$ w8 s% z7 E; X! P

  27. & `/ L/ m2 `$ w. d+ h5 Z
  28.     $Logo_re = './pic/test_logo.png';   1 \6 K4 q- Y% q/ X. Q
  29. ) _7 A% J# P0 ?1 c/ Z& o
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    & U% ]1 J' q, Q: }( K
  31.   D# t! S- S7 W' j* g2 k% f1 O
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   2 f% ~& h! p. S

  33. 8 W$ g& q" U1 `) t3 V
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    1 Y: s. _1 `1 J8 D" \! i4 @5 j- S+ y

  35. ' g: ?7 v  }- y4 D5 }1 g; p& B' F
  36.     $QR_height = imagesy($QR); //二维码图片高度
    6 O; ?. J# o3 B6 D1 I( }
  37. 3 _, V7 F/ A" ?# R9 o/ g2 e4 M
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    ' v4 \; d% j) y0 [6 r
  39. , A: [) _* ^3 Z" x. Q9 L- ^4 k
  40.     $logo_height = imagesy($Logo); //logo图片高度  q7 p/ @+ [. h2 V

  41. 0 ]: ?3 @6 p  a6 k% T5 q- ~, Y
  42.     $logo_qr_width = $QR_width / 5;   
    + B0 y: M0 Q) ]  E7 y- [. S

  43. ( p* l2 W: m! X/ u5 u8 t/ M5 i
  44.     $scale = $logo_width / $logo_qr_width;   / j8 u$ [/ q2 I: _6 K: N8 R, a5 o8 A

  45. 4 x3 ]8 ^& X4 \6 {
  46.     $logo_qr_height = $logo_height / $scale;   
    - d$ S  e; V* d
  47. - v$ `) X7 e7 a. L1 F% _6 C
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    ( b  W, X$ l8 v* Z6 u' s

  49. . }; V! E8 r& e
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   ! f4 n3 z& w3 U5 Z) ?* Y) n

  51. : c/ }; A( y/ X3 I; S
  52.     //输出图片- ]8 U% X& {* C1 }7 t* h5 @  f

  53. 2 W- n6 O& K& U$ ?) O8 Q
  54.     imagepng($QR, $Logo_re);# f% W; g6 A' v2 Z) x# @: S

  55. 9 U1 Y% b1 ~+ K% I' ^$ [7 E, T
  56. }7 U1 z% d5 u; b! d/ w7 a

  57. ; c3 x, B' i% f0 U# ^' z

  58. ) w+ w* `* x& S" A
复制代码
3、qrcode_vcard.php (生成电子签名)9 D1 z- ?0 M5 y# f/ I3 t

4 ~# [# X) h2 C6 D: F; x9 D/ RvCard格式:https://zh.wikipedia.org/wiki/VCard
$ I' P) q5 r( @: o6 [8 P' ^; ], t% k8 k. v' W4 h0 t

  1. 5 Z, t0 E, o: h' d9 `6 ?8 x$ G8 N
  2. * Created by PhpStorm.( v3 n; P& f! w2 D7 A3 y* @
  3. * U' I6 i4 ]) z( X5 d1 t7 C
  4. * User: user
    $ ^( u; W/ {% B
  5. , J% y; ~/ D4 Y5 R1 C7 T9 I; L8 P: z
  6. * Date: 2018/8/15
    ' v$ l& ?% d) j) i6 |# `) W
  7. 6 j3 L5 ~/ Q; g1 Y$ T6 Z, N
  8. * Time: 23:00
    ( i2 o) w8 N4 ~9 o% `9 W( l

  9. & g5 `" Y; P7 P: o, g5 k0 s
  10. */require_once "./qrcode/phpqrcode.php";/**
    $ d/ z  O) A2 H/ |' X0 q, _/ Y
  11. ; \1 ~  ^; y3 d0 \
  12. * 生成电子签名! m4 J, `: g0 g* u: q% o; n
  13. , r. h- O* |3 `& R* J9 G
  14. * PS;使用微信扫描二维码1 p# x& B# i5 K3 Q6 z/ ^
  15. 0 m4 a* ~8 \9 V1 B: R& B
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志/ R  k' J* r6 e% ~

  17. 9 N$ R9 c- n7 X$ ~- W" \, C
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    * @% f5 @! h3 Y/ `4 C0 s8 s0 L, t4 q
  19. 3 o# M# w! x! O! S  J
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名& D. V( d& B' B$ s

  21. 7 U; V- x( Q/ F+ |
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称  f7 ~( A* q4 T; F/ j

  23. 1 X: O* H! Y( m9 P
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位3 z7 d" }; d2 \- v8 A: F/ O) W& X

  25. : |6 v% p% A8 E2 n7 M
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话( b5 _1 f. ?2 Y9 y
  27. ; i6 U" [) j% d
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址9 M6 j7 ^. g  ]' K0 ~

  29. & Y. R+ M# y. q, ]
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    : p3 ^; i4 q+ n" C$ S3 j
  31. 3 y$ b* z7 X0 W8 [% d
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话! m0 ]# T. J$ ^
  33. 1 n" \* L, t% e) T& j
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱# F1 H4 R, X7 M, Z  b! J1 [

  35. & F# g& y& ?2 T3 D; J
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页0 S/ f7 N1 \- f4 @. I& T+ Y3 w' _
  37. " Z; b2 N& t* z/ Y2 Q, X
  38. $content .= 'END:VCARD' . "\n";//结束标志
    4 b! c- S% c2 {( L# C0 l

  39. 3 Z  F+ Q  t5 V1 \
  40. QRcode::png($content);2 X2 X+ m3 W2 S* n
  41. , B6 t! w3 y# G

  42. 5 @8 L8 L& L8 ?' c3 i" D
复制代码
1 L* @) T# n$ u" Q* j, L3 v! [
相关文章推荐:1 I/ Q  }4 K5 R4 e  ?
1.PHP生成微信二维码实例2 M) P* [1 a6 C
2.php网址转换生成二维码
( S' V/ `2 g2 s/ ^相关视频推荐:% G/ D8 h( e9 @$ D
1.独孤九贱(4)_PHP视频教程
& m% s$ n; H3 o+ F5 r二、JQUERY生成QR CODE
# A# W( J5 l1 E源码地址:https://github.com/jeromeetienne/jquery-qrcode
! j, t2 y1 N5 k2 C$ ?% y
4 K& J* J8 b7 D: r1 ]' H1 H! Xjquery_create.php6 i4 A# t5 @4 [" b# ]% I

- n1 J8 v1 J$ _% Q* K2 r! H
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

$ p- ^* k3 \+ A; m三、PHP识别二维码2 z& S! L7 K9 q8 ^) ]
1、方法一
5 k: e0 N" W. p3 U0 `5 L环境需求,安装如下扩展4 E+ _" n* O3 n& l
- ImageMagick% e& l5 q. S( y. r- A6 M! x
- zbar
" w& f% q) K5 `1 X% y. p* X. {5 u- php-zbarcode+ O( J* j. E2 l1 f/ X1 l% F7 A, U& N" C
7 \( L7 o5 ~# W: O, L1 h
2、方法二) @5 i' R: A3 a, g+ m2 q
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以1 B% K; _1 e4 K
qrReader类:https://github.com/baagee/php_QrReader8 ?9 H# k2 J; u5 q% i! ?7 P
4 S+ a) g* u  u% x

  1. : J. q, p2 }' c, N9 _
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径8 m6 b6 D5 Q9 s/ Z5 e% s; B: F5 D

  3. " F& H2 x  t  y% b  A1 c) J
  4. $text = $qrcode->text(); //返回识别后的文本0 w" q4 ?6 o0 D8 U
  5. . |. s, p  R5 z1 ^& ~3 T! X
  6. echo $text;
      }7 h8 Z3 H( x$ H

  7. 9 z' p4 ~, S, F. @

  8.   p$ O$ b( k0 m" j$ Z! y" {
复制代码
5 h4 Q3 m' n+ I* l. I( G" y6 K
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
- r  F" u3 T6 Q5 l! w+ O, J
0 ^, `5 E1 G& \. B" _* U) b. z" V7 W- L5 U. K! S& q6 c! M
- P4 K& E8 S! X1 F1 u) A  s  {

, B" K1 i/ x$ @7 ~4 V1 G7 t
5 i$ b4 ?; B+ B7 m4 N6 L1 P' e' Z: u0 @' y  r, @! Z
; t+ d- t% B9 L% H+ w% y  W, P

' K7 M9 z' V. {0 |' ?7 d. J" O2 `' D4 X

最新评论

GMT+8, 2026-10-11 23:05 , Processed in 0.062625 second(s), 23 queries .

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