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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 16996|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。; s) ?( g7 x% I- W3 l4 t9 k2 A
---------------------------------------------------------------------------------------------------; g" B- V5 k! d
二维码的分类
+ Y! U* H% W: w) m. U( S+ X! g线性堆叠式二维码( z! D0 X" {  i2 B+ T6 H
8 G- B' ]7 L& G7 @
矩阵式二维码, O+ S; e+ p* E$ x% ]

( O5 l8 {( D" J1 Z) Z二维码的优缺点4 o6 Q! @. e, ^, o2 T" R" h+ X
优点* z( Q/ r+ a% P: C" z
信息容量大6 t/ S% b/ v5 h% Q3 m9 f: z7 B+ J# _* j

, p( Q4 L: i! A" Z  u1 {5 n编码范围广4 r& S% {. c( R
+ a% l! V( J# L/ p1 ~+ c
容错能力强2 j- \1 h( Y" A8 ?/ y* c3 t* f
- a. ~# v& t# a/ S/ a$ [% S5 t
译码可靠性高4 F7 q3 i( j8 C+ [: u' e
. T8 U/ d6 `$ @
可引入加密措施
, O  O- t; R" O% S+ q; J7 \( _2 c. X5 J& d, v/ ]) ^8 p
成本低,易制作
# C. m- c) h9 O/ ^
) e% P+ D3 a" e缺点
3 Z' a( Q0 b( O/ {二维码技术成为手机病毒、钓鱼网站传播的新渠道/ M: B$ x6 u# v  I: m4 q* \0 T

" @8 N# ?# d/ Q& T0 v- U2 y信息泄密
% w0 I3 q8 C8 D3 M1 h8 w
) s; [4 V( t' L5 k" e目前流行的三大国际标准+ f& H. Q6 b+ L* t1 s: O  C) K; G
PDF417:不支持中文0 G, z* |1 Z8 V; S, X  P  G

0 b* U& i) z: H7 wDM:专利未公开,需支付专利费用3 p1 Y) d9 K5 [4 W/ |

+ I' L: h' G/ G  `* A; k2 H$ H- uQR CODE:专利公开,支持中文
- @% y. Z& W- x2 o7 l5 Q" N! P4 U- C* }* x  P
QR CODE 纠错能力
& Z5 r/ i4 L& L! G) T. ~L级:约可纠错7%的数据码字' G5 V' S  @# _) F6 q

2 i7 Q9 e( J3 |4 f$ }M级:约可纠错15%的数据码字+ Q# V7 Q/ S, G3 ^, r' ]' d0 ^& X

- v/ |7 q$ c4 Q! v/ V/ ]Q级:约可纠错25%的数据码字
( I' z) i) R- _5 o4 ~( j
5 r  z2 O$ i" f7 K' B% L) zH级:约可纠错30%的数据码字
* E- i& l$ d% X- }6 Q' r4 X3 @' [3 b8 G
前提条件1 n( n# Y, i6 g% k/ C
GD库. }+ @. d/ \: n! r7 O

2 j( r) ^: I" I: k, D5 `- ^1 f一、PHP生成QR CODE# U3 R! }: v: [, D7 U
官网:http://phpqrcode.sourceforge.net/7 q2 ^( ]% x4 k3 O+ w8 E- N
' c5 Q6 x  R/ e: C7 a- x
下载源码:https://github.com/endroid/qr-code1 V! j% t0 b/ F" I2 k( ]0 A- \! L

( L: k( N; }6 T4 I1 N目录结构
$ c& }5 E" B3 \, ^, i
) w- _/ C9 k- ?
* d6 `# Q, [5 A# G& n1、qrcode_create.php
) W* P6 D  q; [) x& Q; Lps:生成普通二维码
; s3 F" N9 E& ]: S$ p4 Y( C2 q
  1. ; \& n) S) T' z0 Q; i* D
  2. include_once "./qrcode/phpqrcode.php";/**
    6 G4 t& G3 |, [

  3. # O: I# \: Y; o0 O
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径1 Y/ U# q9 o/ o- Z$ C2 c9 ?
  5. 8 N7 D6 @$ i0 ~4 Z- L+ O. X: v
  6. * 在浏览器上直接生成一个二维码(内容为abc)$ z/ M+ B  h: X! b$ D$ c7 r5 P
  7. 3 N/ R% k) \: C1 T, F
  8. */QRcode::png("abc");; s" D+ G" v8 `* e- q

  9. 9 b; a7 ~+ Z  w
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**$ v+ ?% \& {' {. e

  11. , m. L% J. [) H% D6 B, |, d
  12. * 生成文件到本地  f9 r' Y5 e0 z. s7 }2 T
  13. % d  R4 q; `  j  l8 K" H
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)8 p, @" x. F7 m* ]8 D

  15. 3 K2 `2 N  z& \, O5 |
  16. * PS:$saveandprint源码的p6参数做了修改% N3 a6 b! J6 ]1 _. F$ g; V, i1 |

  17. - [" n; s. I4 `. h
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);- T6 C& f8 w8 N3 n# N# `

  19.   l0 d. p2 v% E2 B

  20. ) ~* p' C6 f3 \, |' o# W- [
复制代码

% C6 A- _3 S$ p: |4 M% }3 ?2、qrcode_logo.php
* A* g* X* f! Q$ cps:生成带Logo的二维码
  1. 3 X3 G& A$ _1 ?1 J; L' c
  2. /**. Y' g6 J4 b5 U

  3. 1 q4 i, s& X( Z  u! I* _2 i+ |8 r
  4. * Created by PhpStorm.1 C0 ~) e5 i6 O# _8 m, T
  5. 5 }. u  E# z# i0 C4 p6 R
  6. * User: user9 _. I6 e( G& m% w5 l! j
  7. 6 _/ G0 [; |# P4 ^& Q0 i3 ]# t/ |
  8. * Date: 2018/8/16
    6 L- T) i* \4 O2 e7 c5 {2 P* _8 G

  9. # H3 [) X1 j% Q: _/ l
  10. * Time: 10:43+ c% L. q$ Z, ?
  11. 4 [1 l  j4 L* `8 q: j: O5 k
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    * B2 y: l" w3 p4 i* Z9 Z" \
  13. . d+ X7 e, ^5 T8 ^6 }) R+ Y
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称5 }8 ^5 j3 I2 g# X; ?' U
  15. 1 b/ @8 X) x0 ~4 `. v: ~, a1 R
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是; L' K- S4 u) D9 y* L
  17. . g# S- ]) h. Q& w  f$ s8 j
  18. $margin = 2;//边距% F! n/ z& |2 l% R4 h: h* `
  19. . O4 I! J* E* _3 ^4 N# [2 o
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片' n7 N7 q# Z& f+ M: t

  21. 2 u+ X/ {7 H( U! q1 p
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    $ J0 y! s: [. ?

  23. " O4 |- B: h( W& |8 d' ?
  24. $QR = $picPathAndName; //已经生成的原始二维码图) T  M. S2 f+ s% @

  25. . W' M0 A6 W% _1 a# l4 \- }
  26.     $Logo = './pic/logo.png';   - f4 ~. j; d2 \# |+ ]) m
  27. 7 r4 f! z' `9 ]  H/ K9 ?1 o; @
  28.     $Logo_re = './pic/test_logo.png';   
    2 c3 U5 k+ T+ h. ]6 ]8 o$ C

  29. : i' m: I3 |3 k& a
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   1 d6 I0 v5 D( R/ J/ I5 g* v6 v

  31. # ~& K: H" \! c, f1 I  M. S
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   , o: S& i' R$ Q  A: d

  33. : N* B: ?7 B- L3 k( A: z
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    * v; E" Q6 H# b6 @
  35. , O3 s6 U( q% o! ~1 b8 }; w; [5 j
  36.     $QR_height = imagesy($QR); //二维码图片高度$ ~: s" Z; T2 I9 u" {7 q
  37. * Q, L8 L$ X5 T, t: n4 }: D8 i! f
  38.     $logo_width = imagesx($Logo); //logo图片宽度+ o7 [  x6 S5 q

  39. , F. _: S- H* [9 Y
  40.     $logo_height = imagesy($Logo); //logo图片高度4 O" ^1 w, G: e" l# X3 V
  41. - G. F  Y5 U5 t0 L5 ?8 J+ S0 ^
  42.     $logo_qr_width = $QR_width / 5;   # S4 v; X7 g1 G0 T  v
  43. ( h& y5 ]0 L. _. m3 V$ p& |1 n2 n
  44.     $scale = $logo_width / $logo_qr_width;   
    ; ]: J3 u; F  E$ U8 A, Y

  45. " {1 j2 x6 w3 H
  46.     $logo_qr_height = $logo_height / $scale;   
    - @# `7 u% h9 d0 P' Y, }' M: D: X

  47. + J  S; Y( A; Z$ J7 D2 W  @2 G( x8 v; P
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    , ?% \/ u! h) \/ Y. C4 X
  49.   T3 Y& p- I5 O( @: E! H
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    / T7 j0 O( R( b% g
  51. 5 ]' _: [( s+ E
  52.     //输出图片
    $ W) F; ]0 u9 Y$ N8 H$ H

  53. ' _" j9 y2 r, S' S
  54.     imagepng($QR, $Logo_re);" P7 f; j+ J( X/ D9 C, w

  55. * r, |! s# C2 J" y+ Q3 R( v
  56. }. h) J7 P' l/ n8 W% N0 P" o9 E

  57. / `; o, X6 j8 |
  58. 0 D* J+ y+ e0 Y: O" X* X
复制代码
3、qrcode_vcard.php (生成电子签名). o7 [" T$ Z9 H! e) J- ~$ S; D

/ H, v) `2 I8 [7 ^( h5 \3 m% wvCard格式:https://zh.wikipedia.org/wiki/VCard: A/ G8 v. @; B3 T8 \
7 }7 }" b6 w2 B; h3 n

  1. 9 C$ l8 C; M* z* o7 X0 b# W
  2. * Created by PhpStorm.  ]7 _6 H% c' Y" \; B" Y
  3. & ^# l! G3 Q0 \5 \0 l) A
  4. * User: user3 Q2 R% z' R) H( a' ^) r
  5. * K# j7 D" U3 z
  6. * Date: 2018/8/15: M+ I9 Q$ w% L) l1 d/ B

  7. + B3 j4 S2 |7 F& V5 T6 T
  8. * Time: 23:00! ^2 d, [3 _) {. W
  9. + w+ _0 Z5 b' M
  10. */require_once "./qrcode/phpqrcode.php";/**. [2 H, I! |+ a  c
  11. " d; e0 u: {5 H# C/ V* B
  12. * 生成电子签名
    4 W  p% \  {! w4 o8 a5 t

  13. 9 B& X  X' O/ u; E/ ]0 E
  14. * PS;使用微信扫描二维码  q- i1 g' i$ B, X. Z

  15. 7 |1 o, M( o' j6 n. a9 F9 o4 Q! D4 R
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志/ x/ L+ l8 s2 g; C
  17. ( q$ M' }  Q9 s, H
  18. $content .= 'VERSION:2.1' . "\n";//当前版本4 d0 \$ U1 d! I( g7 ]. ?: A( Q* [* H

  19. 7 P! b, B+ y* S7 h
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    . p- ^( t7 N% ^  X0 T6 l7 A, A

  21. # v! ^% U4 Y: {4 p" [! c1 M
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称6 ?/ }$ C' F2 e- |

  23. * M$ e; {* p- n
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位$ D3 p) o: K/ m/ ^& w  L( R: l
  25. ; L, a; F% N9 X' K  ^; M
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话( V( O: O" e2 M( f7 v/ T# g/ q" M
  27. 9 O; S* q" m, K" K) m# u
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址2 j' Y4 ~: Q8 k( Z4 q
  29. + ]. Q8 `0 R& G' L+ v
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    8 y' I" m4 A: n3 H
  31. . E/ P' a1 b: ?, g# |" Z
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    " I. j6 l9 u$ w# Y+ B

  33. ! B) ]2 M) m$ N6 f/ Q
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    6 g# t3 y: e; s' d
  35. ! ^5 G9 ~. p# ]4 F; N
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    8 H  E5 n. D7 S7 P& z! M- P

  37.   B, p4 [- m. p) P+ g5 f2 q
  38. $content .= 'END:VCARD' . "\n";//结束标志
    9 n& z+ J2 c# [+ P' v* _

  39. 0 T: Q, J% P/ Z$ y$ z
  40. QRcode::png($content);
    ! s0 e$ h; \8 Y" Q6 M5 N4 H
  41. $ h' z- B8 Z$ Q2 s; O( \
  42. & i7 a4 c+ M; p% t0 k1 d2 ^4 E% C& Q
复制代码
6 R6 _% Q6 s+ m$ ?& P9 {/ \
相关文章推荐:* k8 |; l; `4 ?! W
1.PHP生成微信二维码实例9 |; s# `% M8 M$ M& j
2.php网址转换生成二维码
' @3 l) E, `- Y6 n, n相关视频推荐:5 T5 a7 @8 b+ M% ]
1.独孤九贱(4)_PHP视频教程! i6 E; p2 q6 S0 ]: I
二、JQUERY生成QR CODE
6 a; t; |5 y. x& L7 B( q+ N源码地址:https://github.com/jeromeetienne/jquery-qrcode
# d! B, b: C6 f7 d* X
; g, ]. u: n2 J0 V9 U; Sjquery_create.php
4 ~# P2 |5 o$ \  F7 r- j+ p1 A. ~
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
2 n6 b: e* }/ d
三、PHP识别二维码; H7 l# B2 h3 d: ]( y7 M
1、方法一( j7 o7 r8 }$ }+ h! d( Z. B  a2 \
环境需求,安装如下扩展# R! D! Y1 w+ h
- ImageMagick
8 c& m0 _2 u8 `  t0 Z2 U9 e- zbar+ e- r! e) D6 p1 \! Y
- php-zbarcode" m, S8 L* V4 |; A. J

/ M3 I" g1 K' n* ?4 g1 S2、方法二. Q. W. R# W6 {) U8 h2 z& Y; s+ |
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以2 ~# M; ^% p( ]% r
qrReader类:https://github.com/baagee/php_QrReader
. d' [& X( Q1 k$ k4 ~' w6 U5 }1 Z! J8 \" W

  1. * v- w8 E' L4 u6 p1 e* k/ R0 F
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    ( f; [8 \0 N, {  ^) @
  3. - B& }& H/ t; f/ }; ?/ X6 L
  4. $text = $qrcode->text(); //返回识别后的文本
    & H4 a' A5 y( X$ u

  5. 0 M. K2 A& u; i: E1 \
  6. echo $text;
    + z8 \$ B" ]" a- d

  7. & w8 t! u! i8 r/ f
  8. ' @* g+ P& E0 Y& G
复制代码

  M* t3 {( F( ^4 |& g链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7$ I- t$ `, L; B) p0 r' C, z
. w# @- y  D- c, I

7 `. \2 r5 `2 u& B1 y3 G6 V
! \& P8 ]  G2 r7 I' c1 w; t* o; W4 d7 }

5 V* v3 r- }2 I
  z6 b/ j" e5 _
* @. r1 u( u2 h' r# f7 T6 t$ m" L' X+ ^0 S
; e" Q' n0 C6 M; \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-19 22:31 , Processed in 0.074500 second(s), 22 queries .

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