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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
! U% Z2 m& b) h* P$ K6 u  P---------------------------------------------------------------------------------------------------- e: m; Z) P% l! ]  P
二维码的分类7 w( g- g3 }6 j/ \
线性堆叠式二维码: B2 o- j2 f7 t, c* ]: k( |

5 |+ f" g# J6 m. c2 n矩阵式二维码9 M) L1 q# J5 f: L6 w6 z' O% H) f9 k

3 j3 |6 D, l7 W4 l二维码的优缺点/ k8 b4 {/ Z/ E1 ^3 p3 [
优点
  G& S: i4 @, K( @" [1 m  J- G信息容量大
$ K+ N- {# T- r, F6 x8 K2 Z) K- b1 r& O( `$ D
编码范围广  u& a* \# e1 g3 i  o

8 N+ C4 m' h9 Y* m容错能力强
. u1 A* P2 L$ [. |2 v
4 p* @$ |7 `% v译码可靠性高) ]7 L+ G4 k: v/ a1 p

( M) Y9 v* K! V可引入加密措施
! r( K0 b5 o. N, B0 Z: b, U8 ?+ B
成本低,易制作
/ J. C2 c, F6 t* D/ q+ I; f" q: ~# f# y- `/ Q/ b; p6 ^2 q* ^
缺点- h8 J- F2 F) E  G; R4 g% Y
二维码技术成为手机病毒、钓鱼网站传播的新渠道' T$ q* |: k4 c' o2 O: M4 n

# X0 f2 H5 R) L5 z信息泄密  C# J, |% H: b. X2 g

; g$ i, U5 s* J+ t目前流行的三大国际标准3 h' ~0 t8 _' ~5 \" c2 W
PDF417:不支持中文
0 \! ?  W, H+ b) U
& c" [- s# O; s- M& m- fDM:专利未公开,需支付专利费用
2 V- B, S1 H' E+ f
# ^# Q6 M2 v5 b; [QR CODE:专利公开,支持中文' h  u3 i- S! ~+ H

7 d) ?' H. E5 E# ]QR CODE 纠错能力
1 P* M& p# b9 {% \, HL级:约可纠错7%的数据码字
/ s) V% ~; J- h% [9 O3 ]1 ]. h4 e! Q. j- L9 S
M级:约可纠错15%的数据码字
5 l$ S( C$ e' O6 P+ k- c" y, ^% p0 s$ B( \/ f
Q级:约可纠错25%的数据码字
7 n& w8 }# z8 J- M
* @7 t( J7 j' P. H/ B# lH级:约可纠错30%的数据码字
" c3 z" f+ D% ]+ _
" f9 b3 D3 x! i/ H前提条件+ O+ g/ B5 _1 ?4 g
GD库
# Y& ^8 D2 i. W8 R* h' H, ?* R; w! a! u2 i
一、PHP生成QR CODE
6 c* n9 T( f2 e! y7 W/ V官网:http://phpqrcode.sourceforge.net/4 c9 n/ r& K; u0 W4 k

" |- X# B  Z% f+ |0 E; q' T下载源码:https://github.com/endroid/qr-code
3 k, b" i+ ^7 X7 L6 U
+ m/ a+ o+ ~5 [& K目录结构" |# Y/ h" g8 {0 i, J
, s# b8 a+ p) ?9 N

6 B' B0 ?" j" D2 _1、qrcode_create.php! u0 h! _8 ~0 ~) e( y) z* M- p
ps:生成普通二维码
; r3 y. \4 Z7 M3 h* k! D

  1. 8 r& j+ b& z/ I4 h0 d
  2. include_once "./qrcode/phpqrcode.php";/**
    ' ~( U5 B. G( p5 U  K
  3. ! K& f& m- b) Z5 h. Q
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径) p* n: a2 g5 ~: j# }& O

  5. 4 C/ w9 ^. m  h# \6 r
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    ) L) o5 d: Q; [! `% v
  7. " @( R# C) Y& S! Q
  8. */QRcode::png("abc");
    ( y) y# Q# d" v* E4 _9 u

  9. 2 s% g) ~6 Q5 u1 m5 S
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**2 T8 Z3 B$ T8 J7 {. v% w( P

  11. $ X# a% i2 c/ F1 Q, d) K/ r* A
  12. * 生成文件到本地0 \* k3 k) M4 [4 e
  13. 8 p7 j* a$ r1 [9 Z, {4 h% D
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)8 J1 r5 U0 k: N$ {- H1 W% ?; ]0 r8 R

  15. 1 _; ?2 C+ ]/ A6 D
  16. * PS:$saveandprint源码的p6参数做了修改& @  @( r1 t  T4 L

  17. $ p. S1 B9 ^" c) L) Y
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    $ b9 \6 y; c% x- K! }
  19. , p/ ]2 @% L/ w' e4 D5 v

  20.   J& S3 Q  z0 F, G3 u+ D
复制代码
1 V9 J1 }! ?1 s- b. g" E2 [
2、qrcode_logo.php
; X6 s; \6 Z. O  s7 ?1 l. Tps:生成带Logo的二维码

  1. 7 l9 P/ e/ n: I5 R
  2. /**
    / v4 u* j& ~- s8 ?6 G! u& r
  3. 3 {1 r8 g2 K5 C) ^3 k
  4. * Created by PhpStorm.
    9 E$ K' p6 P* l8 _; S1 `
  5. ; I. r+ |0 y3 J
  6. * User: user# T% V( W7 d9 F5 M
  7. - @) S! x5 }  {5 B# L% _- ]: K/ }
  8. * Date: 2018/8/16
    2 Y0 R0 ?' J+ [1 Z

  9. 5 i. Y# \6 x5 F
  10. * Time: 10:43
    6 h3 W  @0 |6 B2 h4 i" A& A2 `
  11. 2 I, }% p4 Q) ~+ R
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    - U( G4 W7 B5 N( R- x

  13. + f" ?* P" C. C2 b
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    . M, k% P- A8 b

  15. ) N0 [  L. H  F" L% T! R2 q
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是+ m" D; I; p$ i) U# m0 S
  17. $ ]) p! t$ H3 r! W" \* j& H) Q
  18. $margin = 2;//边距
    1 @" {8 p2 V  \+ {

  19. ! i- q5 s( x$ W9 f- ~4 w
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    2 {! y" R8 f4 {- P) h

  21. 1 V2 l. l. G9 O* |6 J; x
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
      y0 v' I/ f1 {( A# }# D$ X

  23. 6 A+ v/ I4 v2 o  n6 R5 S5 W
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    8 u& G6 z+ f$ ^6 D) N
  25. & u5 A2 Z2 M2 S. {9 F& C
  26.     $Logo = './pic/logo.png';   * S; H2 i! p+ e  g1 n
  27. $ `0 f5 K1 D/ U- N0 \( ^
  28.     $Logo_re = './pic/test_logo.png';   
    3 R0 @: m; r/ e& U3 H

  29. ) H( J2 V4 S9 j- Y( f
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   # P0 ]7 X# M/ {: [& \
  31. 6 d. K: e* O# g$ V7 g% u2 Z3 u+ _
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    & l: ]4 `/ W4 J. M5 J# _; |
  33. * N& I( z4 J" b% I: q5 M
  34.     $QR_width = imagesx($QR); //二维码图片宽度0 n; p* R$ M# ?1 d& f* n3 W- O

  35. * D. f0 ^) ~- k3 M5 A
  36.     $QR_height = imagesy($QR); //二维码图片高度& A8 _' \8 j" Y0 [( m4 E

  37. " a/ _$ W$ d2 ^
  38.     $logo_width = imagesx($Logo); //logo图片宽度" _  J! X# A" B6 e

  39. # ~; P7 Q( \% P+ i
  40.     $logo_height = imagesy($Logo); //logo图片高度8 R6 V+ ?9 T' g7 |# T" _

  41. 4 S/ D# D. s! k4 e5 }
  42.     $logo_qr_width = $QR_width / 5;   
    % l, C! [" ]! a, C& t0 ^" V

  43. 3 q* x" h& j$ Y) r, R% F; l
  44.     $scale = $logo_width / $logo_qr_width;   
    / @0 q( w2 d3 H4 u$ [

  45. 3 u5 f: Y' d* T
  46.     $logo_qr_height = $logo_height / $scale;   4 y, m8 o' v( G0 D8 }0 Z1 k1 m
  47. 7 V" z  z- r( s  S0 E: q  |
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;+ Y3 h' U9 W5 u* I7 Q

  49. 4 C) D4 p/ u2 n. |( ^' f% p
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    & S6 u* |" a9 v5 Y; J

  51. : J* R/ E& a8 d5 T2 f. c
  52.     //输出图片- [. K& }  G- o% W& P2 }

  53. 4 w; D1 l' r9 t+ G: I
  54.     imagepng($QR, $Logo_re);' J' z; z* `9 \* G

  55. ' g8 S# e' v/ a/ K. P$ g, b
  56. }
    $ K+ p9 H- p" S5 K( n( a

  57. ! h4 M& H; B2 x7 g% ~& g

  58. 8 ]$ L2 A0 ^' r# O
复制代码
3、qrcode_vcard.php (生成电子签名). e: Z+ _+ L' q: J& m( C3 b

( \+ ?8 G0 x4 z+ b" M/ TvCard格式:https://zh.wikipedia.org/wiki/VCard9 c& o& s( r5 q' A. W% P
' c1 b0 A0 J7 l: k7 G6 N  R

  1. 1 |5 @  U' M! D- M/ m1 b) Z% b5 t
  2. * Created by PhpStorm.
    ( K! J5 g5 [, }# \  S9 v

  3. , v; }) e2 E- x, x
  4. * User: user
    ; o$ J( Q4 |! ^+ e: z& e* A

  5. ) M: t" M& o: O* T
  6. * Date: 2018/8/15' j7 Q1 R, n0 \3 L3 r: q
  7. & w; q2 O9 I+ G  O4 Z: K
  8. * Time: 23:00
    * l" y, \1 x3 q# G+ ?! r

  9. 4 ~/ _" n% y% a6 d  m
  10. */require_once "./qrcode/phpqrcode.php";/**
    3 F$ g4 y# Y5 x4 {8 X
  11. ' E0 h. D: E0 H: S$ o
  12. * 生成电子签名
    : x; p7 C: M% t* y8 U$ k
  13. $ R7 `- n. I' _2 j9 @& W$ `. Z
  14. * PS;使用微信扫描二维码
    ! D3 L, J( F8 k1 H1 K8 {5 b
  15. & V* s7 e' v2 Z0 [
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志" Z. j$ H8 N/ k; S1 Y- T

  17. * {  v' I. W: T8 V
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    ! P; ~' r8 t6 z# V
  19. ' V, V5 ?  [5 j8 t
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名3 ^6 z  h+ ^/ y/ L( e4 w; V, D. Y6 G

  21. . y* x2 q$ l# U5 c7 t
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    9 B) c! O, B* ~  t# T6 [

  23. 8 n3 V$ |8 d: |2 P: a# O
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位; I: y+ N& C- |2 }4 S: _' N# n

  25. 0 g- F' F) H% a
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话1 W( o/ M( b* C$ E8 ~
  27. ' W) e  F+ [( P# C8 F( P* ?0 r+ Z2 z' b( U
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址" P! l  Q  N6 o6 S* t4 y) k

  29. 4 P/ \- H1 o$ V7 q% F0 `
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)# h2 G0 R9 b* R! g1 @& e

  31. 0 N. i0 A; U* t: z
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话! C) N; @6 r" }" a
  33. , B& @: m4 Z! }* d
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱; U% A, T0 \  w0 `: ~8 p& ]' N3 L
  35. 1 X, O7 f7 T  y: p- a
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    1 Q: K/ T& ]) _% X* d
  37.   T! ^% \9 `4 F3 }; I
  38. $content .= 'END:VCARD' . "\n";//结束标志
    - G7 |9 G5 I9 b4 z& N; N8 Q* y

  39. 1 ?, ^1 {4 }" }! J8 x- D4 d5 a
  40. QRcode::png($content);3 Q; E! W! ^+ i
  41. 9 V& }3 a1 W) g+ h6 k6 }
  42. 4 M( ?! d0 |2 h: f3 s
复制代码
' E3 a/ e) A6 q! A' b/ ~
相关文章推荐:. @0 M& {: X* f9 N/ j3 b  \
1.PHP生成微信二维码实例
1 n3 ?! J6 H8 d2.php网址转换生成二维码. Z" E! P6 {6 e
相关视频推荐:
4 D( o* X- Y. z$ n1.独孤九贱(4)_PHP视频教程
* P& a1 p- S$ O( h二、JQUERY生成QR CODE
5 B& u6 ?. b' }1 L' q源码地址:https://github.com/jeromeetienne/jquery-qrcode8 _9 ?% O) _2 ^3 j; \3 c- q

! g# U" ?2 s2 j  M# P9 k7 Tjquery_create.php
% l! P; u. e" @8 |. I9 c
) ~5 X$ j8 R% E
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
& n1 Y! Q0 l2 }$ h% }
三、PHP识别二维码! j) B  q) ]+ B' x( ?4 V
1、方法一9 w1 Y2 y- n$ Q, I
环境需求,安装如下扩展
4 n8 Q" g! I0 P2 `- ImageMagick1 S2 }. \' g  f# f& D
- zbar: O0 W! t" t5 ~% V3 [! s9 f
- php-zbarcode  ~! I( t8 Y8 D! I& K( B

3 x5 g4 }. \- N: L. C6 S$ i2、方法二7 R+ @0 W6 T0 ?5 N. s& K
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
( z! ]% C7 t$ j  E( Z1 FqrReader类:https://github.com/baagee/php_QrReader* a" ~( p% t0 y3 ^) S; ?

1 h" O9 s% @/ z. }9 t8 X) ~+ }
  1. : |* O/ D6 @7 C6 ?9 E/ \& G& j
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    6 I( Q( ]* Z# k8 v
  3. 5 n$ x( o0 M  ?7 C) C6 C8 h
  4. $text = $qrcode->text(); //返回识别后的文本
    ! U) y0 S% A8 T8 F3 y- [- _
  5. ) E+ M  ^, D. u/ |1 z5 n4 w
  6. echo $text;
    ; g7 ?+ P/ j9 v7 K

  7. ) q: a3 `! W( g9 w+ b2 S* @
  8. 0 E! g% n: \$ }6 \9 z0 ^
复制代码
% `) z% w* P% F, {. m
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
( s3 |# e( g6 a8 P6 W; |& Q6 F5 b; }# k! i' [
1 O3 y) y1 {2 q- C( O; Q+ c
1 w) a. R, G: y  j, K  B/ i

) m1 g! c- d. m5 A3 Z( \; s' _0 w
  m$ f% J0 a3 D0 r
+ t. s  T; d" Y) p$ Q- n* a& C3 F0 [+ }2 T

/ G2 u# i" H7 R6 E# l
+ u- u! T; F' |1 x: D4 `
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 00:50 , Processed in 0.068459 second(s), 22 queries .

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