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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。) X1 R% D. \; [. U# l4 L$ V
---------------------------------------------------------------------------------------------------# B7 j) W: ^& A* |4 H
二维码的分类
/ u! g8 ], T9 T7 D* L' I, V线性堆叠式二维码+ N, |+ I8 V0 S( a# r* [
2 I7 n) X2 ~8 k7 Z$ D# p
矩阵式二维码3 o# S) L% }2 B

1 m1 J9 w% x  G# [二维码的优缺点
1 w8 W% F2 d, t, }优点  B: `. Q/ Z; j: Z
信息容量大
0 k9 }4 n0 I8 {; N' ?4 E5 l: Z9 L1 D3 k3 D
编码范围广
0 J! w& [9 ?+ _* d# M6 N( g
% k* d' t* \% m; N容错能力强
" Y4 @+ I8 i  _5 _. m- P: R1 R1 q% v' [1 u* J
译码可靠性高
1 Y' G* a# n0 O" g+ _4 S0 \. @' p( H. x* N, ?+ Q) z7 a
可引入加密措施
' m: _, u' I4 @! s4 X
8 M/ b- H$ F3 l/ y6 S; T2 K( h成本低,易制作, B) t$ m* T- ~& v9 R% }
+ C6 j; W) z4 X. ]
缺点
5 ?8 b4 Z  U  ^; F+ o二维码技术成为手机病毒、钓鱼网站传播的新渠道
$ I1 L' X- ^# I) m( s! S0 t' F# r, m( p/ w3 N  z9 a2 R
信息泄密: P9 a; F4 I; l5 X1 R" Y7 N
4 p; W! f! P* U* a; n4 ~0 @
目前流行的三大国际标准0 X1 E9 O& |5 C2 c  ]8 N
PDF417:不支持中文! v; U  m5 D! g+ V, v4 P& ^
( `7 }9 `. ~5 G
DM:专利未公开,需支付专利费用
. N% n* z. b& u: W8 \
* c1 H4 s& _3 M8 _& qQR CODE:专利公开,支持中文
9 i, B4 @0 W7 T( Z/ m, e, x1 g; f
$ Z6 T" i& ^5 i! A  I: l- FQR CODE 纠错能力, p: ]- r6 C' |$ w: O2 E( I- t
L级:约可纠错7%的数据码字) f' K) S/ G  N" [. |6 j4 u: U

' [+ m" x* P) R" S: l5 |M级:约可纠错15%的数据码字
2 f% S0 ~; L' v. c0 m; i0 H1 N5 F0 y# y) ]1 b
Q级:约可纠错25%的数据码字
; |: {; s; ~9 K( B: V8 ]4 O5 w6 t( _$ p, o/ g
H级:约可纠错30%的数据码字
3 n% }# \! |0 A' x8 T+ J* Y
, ~2 _2 B3 g& x0 o% J前提条件# R+ T" N5 c# H+ s) {
GD库5 ~0 o3 F8 h/ o# X# g- l# e! t

; O+ r% S  ^# w- U3 Y, Q一、PHP生成QR CODE$ U% c7 |. @4 u' T
官网:http://phpqrcode.sourceforge.net/
$ Y& U) ~' y/ d
1 u) s  S: @6 ]& H( B. J下载源码:https://github.com/endroid/qr-code
3 X7 S! ]) c2 f9 E
, e& X" {* a3 R: \# [/ O目录结构
8 B6 g& Z5 O. Z9 K
, }' G/ r  p2 R6 l2 J- x' c8 y$ w3 X: Y. ]3 A; ~
1、qrcode_create.php- I5 _  E- t5 {( D0 {& P% ]
ps:生成普通二维码' @* v, W0 u5 ?% P; @8 V+ U
  1. 6 \  P+ o4 {% u8 h
  2. include_once "./qrcode/phpqrcode.php";/**
    2 z% L, e' ]; a: U7 d

  3. 8 w1 ?( Z+ M* g6 W5 Z0 G3 y; X7 c& Q
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    2 N4 @0 T8 h; S
  5. . w) D0 u# h) n
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    / S0 V9 w1 c6 \3 o# s$ Y

  7. 4 J* S/ ]- C9 G% F7 \
  8. */QRcode::png("abc");
    , S# b- }$ p7 t

  9. 7 x6 g3 A: L( m7 R
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    + v+ ]/ e! i, r- o! V1 A7 J8 r" c

  11. & \& h8 Z/ L) L5 _' Z$ H0 g
  12. * 生成文件到本地9 g, P& g, w! x) h) v* I" G# L
  13. 2 _. l) W, L2 l1 n" v9 ]# v  ^
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    " x2 r! Q. t( {4 ]; t

  15. : q, \  e$ u. v7 Y! \
  16. * PS:$saveandprint源码的p6参数做了修改
    ) L8 `' @5 R5 z& Z

  17. 9 R. b* Q5 x$ ^5 A# p& @
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    2 w  M/ ^* V" O. s' W: R/ I9 g
  19. 6 |/ U5 I1 f3 C; y9 m  D
  20. # L% Y: `, A3 z& L
复制代码

$ n2 e1 f7 O+ l1 Y  e2、qrcode_logo.php
3 V0 @3 h1 O$ ^7 P/ @ps:生成带Logo的二维码
  1. ! r6 A; h7 X9 }( j4 ^
  2. /*** J( i# {+ ~# S: \2 L( Y

  3. 6 k2 v$ I9 ^. V4 B
  4. * Created by PhpStorm.. I6 ]9 z, m; J% ^8 E+ x
  5. ! n! m/ ^8 g. j/ J
  6. * User: user
    ( d+ d' f. g8 s: ~

  7. 7 W3 x# ]6 K3 `' n
  8. * Date: 2018/8/16
    0 m7 V8 C* b! {7 [( }

  9. 6 `) z& V& S3 T
  10. * Time: 10:43& e6 I- T* E% x+ ^" `9 I

  11. 1 e6 I* K3 I% Y1 C8 l5 A, C
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";' P! t0 W2 @% H" i. B

  13. + ?: k% S( F) G) t
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    1 T6 H7 y2 j2 I9 A% i- u7 b6 G
  15. 2 l1 s8 @' c0 @2 a
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    8 r- \! h, g# _2 z

  17. - H$ T& `7 h0 Y$ Y* I7 h: N( T
  18. $margin = 2;//边距* m6 _* v/ D0 t! [. W

  19. 6 @6 `0 F' w, D8 v% K4 `- ?
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    8 B  G8 x) d7 L/ Z& |' s
  21. . }. P, b* e: d. c) d6 a! U
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    9 M; G# n5 n; M4 s

  23. 7 C4 T7 v# v$ w# V4 n2 C
  24. $QR = $picPathAndName; //已经生成的原始二维码图- O7 Q$ v$ v6 g, @/ s
  25. : f+ n1 c6 o* N* ?
  26.     $Logo = './pic/logo.png';   ! _8 t. a6 f5 Z; `: B4 V9 b4 P: @
  27. " r4 M; B+ ~! k  F7 y1 K0 [7 w
  28.     $Logo_re = './pic/test_logo.png';   
    , u% v2 c& \. P: t# v* K+ |: B

  29. 7 u; J: r4 v' I' p7 G
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    , j. a; m3 f6 {
  31. ' T# y6 G7 v* ]$ l; X! x, c% n
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   2 Z: w$ k8 o$ ?" @' x! B& O* O' s

  33. # j0 o+ J" |1 e& s7 X- C
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    ! b! s: v9 p4 x2 P- F. O
  35. / |' y. B1 G7 A) v
  36.     $QR_height = imagesy($QR); //二维码图片高度
    4 _8 Y, A6 Q/ j( T/ t( [/ U7 ^
  37. 8 }* e/ f" @' K) d+ y% i) c( Y
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    8 r6 N8 C6 T- j
  39. 4 ^  y$ }- l% }* N3 m3 y) f5 z
  40.     $logo_height = imagesy($Logo); //logo图片高度
    6 b# s; _) p6 @0 R9 B

  41. ! a$ t1 X9 Q7 {% `) A; C  R4 {
  42.     $logo_qr_width = $QR_width / 5;   
    , b! n+ ]$ L2 O3 ^

  43. " \0 C1 x5 @# @
  44.     $scale = $logo_width / $logo_qr_width;   
    ! l  ^5 M, x5 ~% _
  45. ! a& U. c& y8 _  ~! Q; p4 h
  46.     $logo_qr_height = $logo_height / $scale;   / F- v5 }2 W, m
  47. ( ?1 ~- y' X5 g2 a
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;' U- ]# R: C& b, l% K
  49. 0 ?, M2 b" a  N
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    9 G+ I" [- A" W% D& `$ g! q! x6 i

  51. + c5 [& k) @# _4 k) f% m3 \2 u! M
  52.     //输出图片
    ' R' l8 }. M$ W
  53. ' h, h2 v# k+ u, \2 M) n
  54.     imagepng($QR, $Logo_re);
      U+ Y5 i0 p7 k; _

  55. " z* o& f' ^" Q, g- f
  56. }) d! {3 z: J5 b+ n$ T# ?4 x
  57. ' `* `6 [- N+ ]5 J
  58. 6 U. Q  @, |; m0 w
复制代码
3、qrcode_vcard.php (生成电子签名). u+ i0 ]6 \3 v

& y/ S, G- r5 s" e; W" _9 G! S' K* V) c4 kvCard格式:https://zh.wikipedia.org/wiki/VCard
( x4 g) _$ P( ^3 y! O  v$ Y& m! m: W, r6 U  ]8 s9 q" b/ y
  1. 8 Z+ `8 [) X2 X4 t( o' f) D0 d/ R: Y
  2. * Created by PhpStorm.2 \! v8 E' K# i$ h4 [( t) J; V7 W+ h

  3. 6 y; D6 f; ^- U! G# K3 @
  4. * User: user! U$ C2 R0 s- d* q

  5. # \% V# ^/ q* Q( d4 ^& k; ?+ i
  6. * Date: 2018/8/15" [! f- {. t) N8 O; I) y

  7. 8 `9 l" B! W, q9 x* w
  8. * Time: 23:00
    8 z* U' u! u% v$ L* v4 H4 o5 M3 w

  9. % W; z# s2 t' \; ?
  10. */require_once "./qrcode/phpqrcode.php";/**: p& E  F) _" h! E* F0 C( H

  11. 5 H  d# e/ T" ~& O. v
  12. * 生成电子签名
    ; u' |6 b* `1 A5 r: ~8 I# n& J

  13. 0 ~# x4 x/ ~3 }, d' C1 G2 l
  14. * PS;使用微信扫描二维码$ D. ]2 L2 Z+ G. V- e9 o' c
  15.   b# W7 s! e, w2 B& L9 Z, _6 |, s! t
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志5 O8 E  }! h: W/ R4 e: ?; F+ f

  17. * @$ u+ C& h9 i( G: @
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    . f# Y7 [& ~9 ?' v7 Y  ?/ }

  19. / T" b6 `+ j6 x& s* V
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    8 e! o7 w9 X- v5 |/ O$ t4 P% B- U9 J
  21. & Q( D. q: ]6 G$ i7 m3 {! y
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    2 S# n% Z) c7 N$ f, @6 v9 C
  23. 6 k5 i' [. X2 E( ], R
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位7 f$ J  L# [. u* s  _0 V6 X/ E
  25. ) {" `& J- {! ~$ }6 s
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
      Q( a# j( U! j9 x' P, A9 A

  27. 6 _7 S' g' R! B
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址5 W% x- d4 Y+ W8 s
  29. % X% y- V3 |/ u; [) {5 Q+ v7 a2 o
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家): v8 S/ O3 o  t" C/ C' U
  31. $ g/ Y# M! J/ l3 P6 R
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    " Z# Y) y; M" \: l( p" V3 n/ }

  33. 5 d; l# f$ a2 s) N
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱# Z' g" W2 q8 c# w# h$ _
  35. & I( m7 i' ~9 {: \  a
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    7 X4 X2 F8 x: S% t9 K6 _
  37. ; g/ \1 m( S& z( w
  38. $content .= 'END:VCARD' . "\n";//结束标志, G, G5 i; n3 z% K; k# \

  39. 1 @; j- D8 F2 s/ D+ A* o$ z& p9 ~
  40. QRcode::png($content);
    " i8 u6 A$ S% ]2 D, D9 e% b- k, S( D
  41. : n9 F$ N' Z& Y- b

  42. 9 F' [3 D  G; s& L3 m9 b8 C
复制代码

' A* }$ p8 C# W! F* m$ @相关文章推荐:- l3 P1 R4 [) x! E7 X" m1 T+ n, B
1.PHP生成微信二维码实例6 d' Z9 n( S) d! R( C3 c# m  P: w$ ?
2.php网址转换生成二维码  _2 \) h8 e; E- B8 n& Q$ L
相关视频推荐:
1 y7 t" }5 @( p1.独孤九贱(4)_PHP视频教程3 B) f8 f; L, P% g6 V5 O- k
二、JQUERY生成QR CODE
4 q& o/ ], E# C) s' }8 R% x源码地址:https://github.com/jeromeetienne/jquery-qrcode
" O* c9 c+ h, |/ n8 F# V( |
4 ~2 D5 }6 |) D7 P, T% _jquery_create.php
! l5 f4 O& ^5 Q4 ?6 J+ h0 \/ u# e9 G. {
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
# f8 ^7 u9 ]; s
三、PHP识别二维码
" X) Y9 y" J% ^+ }5 g; e- r8 D% q0 b1、方法一( H2 O  Y# E% r. X9 ?+ g! R1 B# A
环境需求,安装如下扩展1 h# g  k! I% D' T
- ImageMagick
1 N) H3 e0 b3 G: }: O- zbar8 A& z4 Q+ Z% T. s0 q4 N
- php-zbarcode" }: ~" |6 h% t' C

# F1 @: r* _5 r0 P( n4 C2、方法二  n, V2 P% ^' C/ u. h
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
% m, c  E# B* H8 M. f6 L1 LqrReader类:https://github.com/baagee/php_QrReader4 U. S. l& r' ?  t
& N0 J* m& n% I6 {

  1. $ k0 `8 [  T2 H2 W& U+ y2 W
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    $ M; `9 @, I5 Y
  3. & d% O% y7 q) ]( W3 a5 p# ]! l9 n8 Z
  4. $text = $qrcode->text(); //返回识别后的文本: Z# q# k: n! e1 S

  5. 9 `* x; h6 G: Z! x* T
  6. echo $text;* M& }8 v, h4 `* e$ U

  7. 7 p; o$ m; @& E
  8. / E$ d. g, _5 i  A
复制代码

4 y2 `2 B: g5 e) C5 K链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
' y) {  F: g0 d  N
, n) Z/ G. R' B8 n; g
; u* r6 ~- f2 e8 m% ~$ j% R. p4 w" @* T6 T/ S, c

5 _: |$ |' S8 O$ D2 n" f$ R% `& u% W: t  n% f

+ S! S  `/ `+ F9 H0 [8 ~) |
1 r9 c8 X/ \3 r" r$ [% b1 w  W* w7 T3 g% m% n

5 k- A, h6 M% b5 E/ B1 S
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 16:07 , Processed in 0.077992 second(s), 23 queries .

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