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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
, x& o$ R: J- U$ j---------------------------------------------------------------------------------------------------" v- v7 _+ \; p% ~
二维码的分类1 k  w- \* B" J$ Q
线性堆叠式二维码
1 W6 s' t/ @: J9 ]6 V: g0 ~. x( R$ d, d* c8 _; a* ?7 u; A7 w8 E0 K
矩阵式二维码
* S  y) y0 H  i/ g# ~  P! }, j. Z" g, b! Q+ o2 p$ ?+ _
二维码的优缺点, q8 V+ ^; V* D1 e" j5 p
优点4 l* R  E7 K. q4 `/ Y8 I+ G
信息容量大3 x' E8 i' {) R  q9 T$ K
$ l/ m* i3 i) e6 n
编码范围广
/ g- S  d7 u' u) w4 ]
6 t1 o, K$ r* e- l容错能力强
0 P& u- x3 s& W* ~% R
& p. B. H' G, }- Z# H+ X译码可靠性高- N$ t$ ^  S: h% \: P) Z

3 `3 g! O9 g$ M/ N1 k可引入加密措施3 D- ?1 N% n, ~7 E. X- s

  s% E# ^& N8 y; G, ~' p# m0 v成本低,易制作7 L2 D7 u. V4 l1 n! a7 x! V( G9 ]

- U$ c# B/ s4 w7 D! R7 ~2 S$ A缺点. }- F1 F; p! ?7 S( p
二维码技术成为手机病毒、钓鱼网站传播的新渠道. q* e( F% O, Y0 u" y! Q

& m' k7 O. [! z3 |" J8 [- ~$ u. u信息泄密
1 o% ?( Z/ g9 s" M$ T1 `* w
: q. i) D: r) F& i  G1 G' I$ ~# W+ k目前流行的三大国际标准4 `$ }$ U3 _! ?
PDF417:不支持中文* d" @; q( ?) S" ]+ l- I, i

; i/ k3 t# q  c8 X4 n" lDM:专利未公开,需支付专利费用" o% E6 l: X6 m! z( l! E2 R1 q
; L, j7 O2 q- C0 g! t1 M
QR CODE:专利公开,支持中文
9 Y/ |! h  t4 _7 p) z3 J/ G1 @3 {. M7 h' T+ z7 `
QR CODE 纠错能力
' N8 ~& s- I  o" M' N# jL级:约可纠错7%的数据码字
1 S/ \6 N$ e9 [
( M1 Y. `7 L: FM级:约可纠错15%的数据码字% e/ ]7 h# F* @9 i
! O( p% r/ P" z) C! S8 p, c; Y
Q级:约可纠错25%的数据码字1 u0 q9 O+ V5 ]& s& R% n

* g! N5 z# R+ v+ l: p# Z* [" o) WH级:约可纠错30%的数据码字
5 O1 x* s& r! [. o/ j$ i: W5 n
8 f1 X% H/ v3 ~9 Z4 M' @" i前提条件
% p- H1 r( E% i8 {# HGD库
0 D7 {" K) S  h& \3 m2 A& c; e( X/ C& Y5 ]4 {4 S- c
一、PHP生成QR CODE
6 @1 _  C  u9 {2 ]+ J8 ?0 B% i# m官网:http://phpqrcode.sourceforge.net/- z0 D  f! K: D" a
7 z$ I. v/ `% H9 E
下载源码:https://github.com/endroid/qr-code
( g5 w2 H9 i* d# b( m: q; l0 @. \) b( r, M
目录结构# T* f% C( _2 a) B/ R6 X2 g$ @
" X; _9 P  u$ q+ s' n+ E. K; B' ~' N

2 W& R) ^3 F/ s: ?1、qrcode_create.php2 j4 |- M- Q6 G, m
ps:生成普通二维码% R* B$ W8 K7 o
  1. . p; V1 Y4 k2 ~5 E
  2. include_once "./qrcode/phpqrcode.php";/**! Y( p  e' n0 B+ d( v
  3. 1 Q  Y' g) `1 ^: ]
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    " i$ o8 ]* _3 {+ m2 ~
  5. 5 O% t8 p7 l6 z) v
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    1 y! A6 c4 j  P% ^1 U+ h7 o
  7. # u8 q2 ~4 I, N+ V5 T# w
  8. */QRcode::png("abc");! k/ D9 Y4 N9 Y

  9. ' q, B/ Q) M9 P
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    # j  a! }! P- o1 M  d
  11. 2 }( z  ?) x% a1 c  E# g
  12. * 生成文件到本地
    * w$ U8 G9 L4 I# z- Z7 s! X

  13. ' n# T0 y6 x; R" q! l
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    2 E/ c8 K- F1 C
  15. ! R9 V1 Z  o$ e. V/ X
  16. * PS:$saveandprint源码的p6参数做了修改2 S9 l  q9 |3 W' [/ A

  17.   n5 H4 H9 n; F; f- Q
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);3 f5 `% m% s" m: n) |5 w

  19. 7 M5 ^) F; |" @: W
  20. * l+ |" T! M7 b8 n# r. v
复制代码

0 `+ A0 f+ c/ M1 f; P2、qrcode_logo.php
9 l4 B# K* Z$ X) ^! Vps:生成带Logo的二维码

  1. 7 @) T1 L' I* F+ L  f0 _
  2. /**
    * K7 t1 A9 j9 p5 v) M! Q1 c8 O
  3. & N% p( f% H! N' s& p! |
  4. * Created by PhpStorm.
    ' Y: h8 {4 r# {4 t
  5. ! J: f5 W& Z& X: J( S
  6. * User: user
    - m* g* f) v$ o' t% x! }

  7.   z, i8 _9 D* F, p, q% `( D* K
  8. * Date: 2018/8/16
    # K- l' f  m0 ?, V& N+ U- }

  9. 0 O5 i' F) ^! b2 T( o
  10. * Time: 10:43! ^  p( }  m' `6 P; S- m5 q

  11. , q. t- M6 Y! m
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    4 n: M3 M2 h/ o0 i

  13. 1 {- Y& O7 k  l7 z' r9 `4 f6 z* a
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称  f2 \, a1 K7 d# ?* i
  15. ) c( a9 k" i- Y
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
      G4 S  V& |/ t5 |6 ^6 F, M  p6 ^

  17. ' F# D' n' l9 W
  18. $margin = 2;//边距
      l/ A5 }1 n: `
  19. : ?9 g: q5 c% M5 h
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    $ R; t+ T# a' V3 {! @( @  q
  21. * H5 l7 q/ }1 {: \# O' ?
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    ' \& G3 b8 V+ c6 {8 h4 W$ _" b

  23. $ A5 _6 o# t$ \7 P, j
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    5 S, [  I: }  J: F
  25. 4 ^+ j3 s5 c+ `' L& ~! v& O
  26.     $Logo = './pic/logo.png';   
    ) T/ U" l- I0 f5 S1 E
  27. ) M: H2 j7 \" s1 W% g
  28.     $Logo_re = './pic/test_logo.png';   9 E" `5 v' i; o0 ^" I$ C7 O
  29. 1 b0 z8 z: A( p: |  Y: |0 s
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    " f7 B/ s8 W$ y3 P2 u* g6 F

  31. $ o8 E0 p# f& U1 _0 I% Y
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    ) j) R+ r/ }$ T8 |+ r& t3 z  V

  33. ; J# ?  E) i3 B$ n
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    . t0 x9 x7 H& s! q4 E6 u' X

  35. 8 A, M- t4 g* }
  36.     $QR_height = imagesy($QR); //二维码图片高度
    . K& I' _! ~+ l; L( O0 l! [2 ?. p
  37. ! p3 p  B* k4 Y: k' ~
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    5 x7 Y2 M9 P6 i3 U

  39. " N( z+ p- B0 ]) }. \9 Q
  40.     $logo_height = imagesy($Logo); //logo图片高度
    $ J) G/ V/ e& z. G
  41. # y) m; y6 D7 F3 x0 i
  42.     $logo_qr_width = $QR_width / 5;   
    . U9 W0 |0 H5 f

  43. 3 ~# O' O% {  V
  44.     $scale = $logo_width / $logo_qr_width;   : r( c3 c) o$ S0 q5 B# M  U- d

  45. " u; v; v$ P# l
  46.     $logo_qr_height = $logo_height / $scale;   
    $ r( |( j' O! k: m# ]4 Q
  47. 7 F+ i7 |+ _3 @* K1 i' L
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    / v" \2 P/ ~: u8 D% p% r0 Y& p/ z1 v" O

  49. % p2 ]4 I, C! a3 e
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   : U, O# Q/ Y3 p, v2 g1 ]
  51. ' i$ ]. x: C* b
  52.     //输出图片
    5 x, X; i* x/ ~$ S9 m, k

  53. 2 q$ @/ F% s7 ]5 Z+ ]$ G
  54.     imagepng($QR, $Logo_re);+ z# C. o% e2 J  H

  55. 1 _) N8 r0 ~% W! r9 n; Q- ^
  56. }
    % C' y9 p0 ~- Q* H8 N

  57. ' L; K  q. o. \# v$ c2 F
  58. 3 [0 @5 {( X7 ?4 f$ ?  x( i& X
复制代码
3、qrcode_vcard.php (生成电子签名)
* u* \' `8 c2 v! A& Z: Y$ k2 {- c1 N' }9 c1 a/ w
vCard格式:https://zh.wikipedia.org/wiki/VCard
3 }4 Q9 ~7 D; [9 A0 Y
- N; b. H: T& @+ u) R. w

  1. : \7 A- O! ]  F  x
  2. * Created by PhpStorm.
    + U2 N( }' f6 ?5 V6 y: R" A! @

  3. * ?. v$ [  `  T$ I' W
  4. * User: user
    1 ]" j) X, N; ?2 |4 P4 ?$ M  y
  5. + b$ V6 n2 M  {4 r
  6. * Date: 2018/8/152 D% v4 O+ g; W

  7. 9 g5 }" l; V/ Z8 c+ a
  8. * Time: 23:000 S  F7 q" H2 N+ {: p- @- \2 f6 p
  9. * r& Y; v3 A! n7 z
  10. */require_once "./qrcode/phpqrcode.php";/**
    5 h' ^* \' E; A2 u& L, ^6 v

  11. & c/ J0 E( M, F7 L
  12. * 生成电子签名
    $ w' R4 s# P1 {5 V! p, v

  13. ; d$ ?2 K( v' ^/ U* a  Q6 B
  14. * PS;使用微信扫描二维码
    ; }" i% {5 p3 o4 L6 U$ |- Q# I

  15. # q# T5 S* J% M
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    1 U' H! l( E+ }9 Y+ c  w

  17. ! u( p5 [0 G( R" y0 V$ f1 L. y
  18. $content .= 'VERSION:2.1' . "\n";//当前版本$ {4 x8 T0 y/ G: ^" U- {

  19.   W7 V& F% r6 I
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名# \' K  k& Q. ~: R
  21. : d6 ?# P" `, V. w6 N
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称. J% f2 a9 _3 `& T% A2 J

  23. $ F3 ~3 V' P6 k5 T7 R! o+ |$ r
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    ' K$ h. o6 r5 T4 P

  25.   r; f- L2 a' k+ M; |+ l% M3 m8 I
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话: o$ C. Z& L$ E6 g7 i  w& n& z

  27. 7 D/ w4 q, W7 }4 D
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址; q7 x6 l) W8 F& H/ ^
  29. 3 \: z2 a- z0 |2 S  f
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    , K" N* a2 n3 m! U
  31. - Y5 Z- ]  L- x
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话- ?1 z# @$ x' Q2 p

  33. ! V! R0 X5 Q& n/ I" v  ^
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    4 R- n! E6 M) p! N$ R
  35. 7 J, }/ w& @- U9 `# h, V
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    0 n- O- o4 C/ f& n. ?. R
  37. 3 T7 J' _% S8 A. ^0 K, x3 n( M
  38. $content .= 'END:VCARD' . "\n";//结束标志
    - S" H( M! M) D. D) j
  39. ) I; a. A3 S. q# T
  40. QRcode::png($content);9 y5 \4 ?7 P4 w, T2 O- Y
  41. 6 t" m- v' |2 y# ]4 ~
  42. $ J7 C* G& D  A' X9 H$ d
复制代码
1 K$ {. s/ }6 v3 k: b- v% J6 G4 s
相关文章推荐:( [/ Q0 h5 E3 e0 D5 _
1.PHP生成微信二维码实例
. d' \: ^( [$ M+ }5 S2.php网址转换生成二维码8 X5 w0 u/ b  p$ o8 k3 w
相关视频推荐:
$ R+ G" t+ h$ b) W) b, n1.独孤九贱(4)_PHP视频教程
6 ~( p' A" x. n% r- j二、JQUERY生成QR CODE( k! Y& z7 N0 ^) e1 M
源码地址:https://github.com/jeromeetienne/jquery-qrcode
& a% q, o4 P5 f$ G" ?# @) j6 P2 K$ ~# ?! v* ~' {
jquery_create.php2 {/ {3 p, C( o2 R3 T. l! g: P8 P

5 x4 [) F8 T8 y0 _3 Q
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

! K) j$ o" W/ v+ t3 `* M) V三、PHP识别二维码8 N$ \/ j" \& a3 t) m
1、方法一4 j$ J5 Z* {% {! z9 m4 D
环境需求,安装如下扩展
4 P( D% v3 ~2 t. W5 w- ImageMagick
/ ^/ g/ r8 f, u$ ?9 U" Y; r3 J- zbar1 }3 G, b3 X- D* O7 F8 W
- php-zbarcode
- {& v+ g9 f: O1 ^! {3 z- D- @  q; l: {# u0 m
2、方法二0 L  J+ \- t. s
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以, w6 f0 r% J6 S$ B9 a' U' S( v
qrReader类:https://github.com/baagee/php_QrReader
7 k. W3 U1 |8 J$ G8 |( z+ u6 X, |1 {8 t# ~  W1 g4 \( M! p

  1. * |8 D$ J% o( u$ o
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径1 t8 [8 y. `, s( C; k* s; N9 z

  3. ; T: m, H& i2 F. \( Q
  4. $text = $qrcode->text(); //返回识别后的文本
    2 z1 r0 Y+ f4 g
  5.   `, W" \! B9 j
  6. echo $text;) h2 P; V  t7 _9 j' a

  7. & z# J6 I% x# v: Z
  8. ( g5 i) ?3 H' j6 Q6 E3 w) R4 H$ ]/ |
复制代码

0 S5 ~/ ?6 A0 g3 `$ b/ Y  B链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7; F) D4 _3 ]. U5 T7 M3 z' Y9 b
# `: W+ d0 \0 S/ \& x' M% S$ m
8 z- M( D+ _( n4 i' Q* q
3 x- i( l4 _+ c4 {+ f9 o' Z/ o$ u

" @8 b, b0 \* s* W4 |5 R* l# o7 e' e- x

* R; B; y! e) b5 R; {1 Y0 `+ P( L- Z3 E  n

, N! ^; [; Q; t2 S0 A/ s/ A
8 A9 b' ?7 k0 @) E& F) @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-6-26 08:19 , Processed in 0.167961 second(s), 23 queries .

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