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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
0 o8 |: K; Y1 [9 J+ A) `9 @---------------------------------------------------------------------------------------------------
4 I: k5 L: l  h* g& y: O  Y' e6 N# P二维码的分类4 {  }/ N2 F$ ?
线性堆叠式二维码+ y8 |1 m, X0 e$ C- F

) d+ k! ^# E! f6 p- l矩阵式二维码( c- f2 t6 W; u% j( V! h- C( I
# N" d9 v* Q1 c6 {& p
二维码的优缺点
7 d8 N8 G+ m% M  l优点
9 f  T; y+ W2 W  Y8 [  k信息容量大& d& [- E8 D, K
; C2 l) P$ }/ y1 u
编码范围广  H, d/ \* C' R4 g5 g! ~! Y

- a9 y& k7 P6 `) X1 v& L/ s+ i8 Y容错能力强# I+ L5 }0 E8 q2 U/ A

2 V( u. h' \! W2 I' @& B; r7 U译码可靠性高, R/ L3 l2 Z  X- K5 X0 d

. c1 H8 u% E) c" v% |. ~可引入加密措施
3 [& o6 }5 b# t# n$ [  t3 ?
! I" w" {' H( p+ Q成本低,易制作) s, G$ B: u- S$ H

5 b* |  I. N  U& \2 e3 l/ P. {* Q缺点  ^1 o# t* |2 i$ Y9 G% D& B- W
二维码技术成为手机病毒、钓鱼网站传播的新渠道- O. T; P+ k$ C1 w  b

2 z3 J5 @- R! z4 ~5 N6 y信息泄密1 ~7 m/ q8 A0 A9 U$ t% }( M. I/ r6 W

: O8 b+ d6 r( Z" l, k0 b目前流行的三大国际标准
1 Z( w3 D, A  L( M2 E0 nPDF417:不支持中文0 e  x2 E  ]9 V- j) S
3 g* Q6 v5 g7 n0 E. `
DM:专利未公开,需支付专利费用( N2 j0 F( o1 u1 J9 \
, ?; f8 q% y4 D  Z
QR CODE:专利公开,支持中文
+ r0 D  y5 g% f% o* h: D
' r" y* A1 {: j2 W$ VQR CODE 纠错能力
+ C8 A% L4 a2 f+ t( LL级:约可纠错7%的数据码字
2 ^$ x5 \) J! n" I8 S5 P) k* r" B( ]' h" V/ [6 Y9 M, r" d: s
M级:约可纠错15%的数据码字
% U# q9 ~& E8 f. |% {* d
2 D3 p& u2 C9 D1 W- sQ级:约可纠错25%的数据码字
( L" ^6 X/ c3 P  t. v4 U5 D
/ A+ k7 A# o& {H级:约可纠错30%的数据码字" z0 S, ^, m2 c) h2 @

/ [( k# G: R  i+ W前提条件
5 p; T- P) a# n- C0 K! \, G2 M/ lGD库
: t) X- r: I- a: `, J) J- a* _8 f4 F& r, |  I
一、PHP生成QR CODE
8 T/ j9 m2 A7 \/ p官网:http://phpqrcode.sourceforge.net/
% w9 h9 [, A5 I. B; f
( n, x7 s- G6 O: G5 w3 ~; w1 z( |  B  T下载源码:https://github.com/endroid/qr-code
/ m  u5 M3 U" ^, q4 N- D& ]
: G1 I- i3 V: r4 U+ r# ~目录结构' u6 b$ F2 y, C) E# H5 d

" r+ ?/ M5 r2 S% p; N
/ y  H+ ~) g5 k* @' {( b1、qrcode_create.php; t( O4 a* W. a" l
ps:生成普通二维码
( }( q& b; r! h+ v/ z

  1. 2 @+ ~: m1 S1 K1 w4 R, T
  2. include_once "./qrcode/phpqrcode.php";/**7 T  j$ F* T, ?
  3. & S" O+ R/ {: S, A; O
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径! ^3 y3 L# {, H3 W3 c
  5. 0 N9 y" u3 ]9 e! p; t
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    + ?$ I$ D  [8 i

  7. ; Q- N* F* n& D: F! H
  8. */QRcode::png("abc");# z# e2 A* }1 N% e2 F; F

  9. - B% z1 l1 O5 s0 r) ]2 J
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**: r3 ]5 ?! w# k( Y

  11. - n8 M9 d" h, R, d- J& Y
  12. * 生成文件到本地, q, m+ s' e! K! C5 D& E

  13. & o. ]$ ]" }; Z' j' N$ i
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    & w; O7 x: i8 `% X) K9 ^

  15. ! Q( h* S+ o3 _0 l) e, N* T
  16. * PS:$saveandprint源码的p6参数做了修改
    ; |  g9 [. }( q/ c1 h3 C1 O
  17. 6 Z, f4 f, H- `5 C$ s
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);. |3 S% o! {, |+ w
  19. & v7 l( }# q- X# r! O: {
  20. - N6 b% S0 p9 Q: |
复制代码

5 `5 v+ x# _' ]# U2、qrcode_logo.php
6 E6 F* `- {9 q; i' X1 f# p8 S4 r+ Xps:生成带Logo的二维码
  1. ' @  t. n3 @! J; X
  2. /**0 O. h' z: X, V$ \( `) j

  3. & a" N, ^0 Z: Q( N2 t* b9 C$ @( @' Y
  4. * Created by PhpStorm.1 ~+ P6 X1 b7 G) k, }
  5. , u- M- N2 z; }" s7 ^2 ]
  6. * User: user
    " ]: o. w7 Y( U* c# \/ B% @

  7. ; l7 w8 y4 f6 ]; B- H
  8. * Date: 2018/8/168 U: b1 ?5 j/ h0 o1 v! _

  9. . g! b+ L3 v+ L2 e
  10. * Time: 10:43' B( N2 v8 F+ u
  11. 1 }5 E& I8 k6 g! ~8 @2 K9 y) I1 k' ~( L
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    # N: c0 |# i+ p7 n9 f2 u
  13. ; a! f5 ~' _; p! `& l- z
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称7 S- K- R/ |* @

  15. 7 h) e' b5 s& [$ }
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    ( u3 i+ w  c# U9 M1 {  K5 s

  17. 2 M  Z/ g3 B( r5 P4 v3 [! [
  18. $margin = 2;//边距
    5 Q  R7 A! y1 c5 N
  19. 4 F0 V4 {- H& r  u% }
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片/ m6 U) U3 @. D$ a2 H

  21. + P4 @2 J" Z$ T- X4 z
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    % j+ X4 u0 {9 B

  23. ; n3 {% e1 I% k% |0 M  s8 l0 `
  24. $QR = $picPathAndName; //已经生成的原始二维码图: G; Y3 V8 k/ i
  25. 8 N; }- X. j0 M7 v
  26.     $Logo = './pic/logo.png';   
    / M% o( v: o/ X7 \4 ?& u
  27.   I8 {# g: T# `+ E! ?; @
  28.     $Logo_re = './pic/test_logo.png';   
    6 R6 c" C0 g1 ?! W# y

  29. + L6 i9 `. ~3 z- m! f6 I
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   0 j' X8 h6 W2 f0 x
  31. ! d6 s/ u0 t( H7 j4 }
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   0 P5 g# F/ J/ f% p, W
  33. ! v4 ~  C2 @9 ]$ H; L: g8 H+ y8 y4 f. C
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    * Q- D8 ]6 ?2 Q  N( R( W- [

  35. . \5 t6 y$ z$ B! z' f5 ?
  36.     $QR_height = imagesy($QR); //二维码图片高度
    ) \  @+ b5 t9 q7 @. ]
  37. 6 D& [+ `" u: ^) R* ?7 M
  38.     $logo_width = imagesx($Logo); //logo图片宽度. ~9 a, A6 l% C, ?" Z1 q

  39. " h* F1 q+ S% L; G; M# S, w1 K
  40.     $logo_height = imagesy($Logo); //logo图片高度
    ! b, G" L* O4 I" }& y
  41. 6 |2 f# X8 D. ]! P( q) v. N
  42.     $logo_qr_width = $QR_width / 5;   
    : H6 c4 [$ K3 r) ]' G( u  l& F. m
  43. " [  Y+ s, j, W5 z
  44.     $scale = $logo_width / $logo_qr_width;   
    1 ]2 m2 ^/ X7 v
  45. 5 J7 U' @8 n6 t* A& H: Z2 A& X" b$ w" P
  46.     $logo_qr_height = $logo_height / $scale;   
    & k! z) m' }1 a/ P. M) B

  47. ; c) f2 k! r# P$ I
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    ! `- t1 V- J; B  v9 J' l1 I% g
  49. & v3 O% o) o( Y! B; X8 S
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    $ D  m' y/ X$ @# ^
  51. 1 T5 `0 L5 z4 b$ v/ [. C4 H
  52.     //输出图片
    " `- ]3 I0 Z/ a/ I+ Z" T

  53. ; F/ G% E0 p1 X: n4 j* m" c
  54.     imagepng($QR, $Logo_re);: C# V( p# o6 |) m5 i" Y" N
  55. ( t* W- {" g7 y6 T5 h# r9 G& B3 H
  56. }3 U' u5 S* S, `$ E7 a# r. i

  57. 3 x9 ~3 c+ ]4 Q: h

  58. 8 E0 c6 S# v, M4 j" _5 g. z
复制代码
3、qrcode_vcard.php (生成电子签名)
. a* S/ N, ~; `2 }8 |0 V5 ~! U% t
) @! Z* W5 G# Y" k1 ]vCard格式:https://zh.wikipedia.org/wiki/VCard
3 m+ j2 ^! C; E" A) J# R/ ?4 _4 H" t2 b( W1 h( I
  1. , r+ \" d, C1 W* Y
  2. * Created by PhpStorm.
    / |3 N# R, P( m' h) Q

  3. , h: l& f% h9 m" D5 X
  4. * User: user
    . o6 _; m, ~# a! i& |
  5. 4 ?6 g0 B7 k% q# X$ |; k+ |
  6. * Date: 2018/8/15
    + k" M  o% ?# i7 X9 G: U9 y

  7. * V. y+ W+ p) Q  c# d
  8. * Time: 23:00
    * [: e$ g; n5 s+ _8 \- L

  9. ! Z1 A4 N& r. \" Q# y4 U6 L+ d
  10. */require_once "./qrcode/phpqrcode.php";/**
    % I( E7 F1 c5 B) w
  11. 5 A+ ]4 T5 [2 T6 n5 p% Q7 _/ Z
  12. * 生成电子签名
    4 ~$ W" u* v1 x2 }9 [
  13. 5 L2 ]" n: t4 A
  14. * PS;使用微信扫描二维码3 F( j& U" z: n' C

  15. : E! U1 o2 k% `
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    , n+ _6 T) [$ w, S5 n) a% E) z$ ^8 M' z

  17. 2 S7 n6 O8 |* v  K) [
  18. $content .= 'VERSION:2.1' . "\n";//当前版本1 D0 L- J* T8 G4 l

  19. 1 q* D' s8 V$ E9 Q' {. b' w! E
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名) }: @4 A7 c' u/ v4 t# U
  21. ( C6 @# g  t; j
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称5 Y8 B. w3 D& S/ ~$ Y* ^2 d' [

  23. ( ]2 \) A0 }, F! y4 y$ C
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位: l) l. K" M# p& r

  25. ' c7 N3 \" M% C# v# a( Y' c+ J1 i9 s
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    ' T& J5 Y. r, c

  27. . j1 _1 f& Y9 v& g) G& N
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址5 M( t/ A' _1 x3 I+ [  A
  29. ( K+ j# L0 t4 G7 j
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)( Y: B# J8 S7 x/ d, W% Q9 N

  31. ( X4 r8 E3 e& H6 S4 {' o
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    9 C/ a2 S8 R6 i9 I$ l4 A, r& z" i/ ~
  33. 3 [& b6 s& o9 J* u+ N& {7 `1 q
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    ) x$ n" a" J) N$ X2 ^
  35. 5 u6 v- |7 r5 e/ Z
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页* E( b, d/ J) O/ k% C
  37. 6 C( \: B) O% L# n  D
  38. $content .= 'END:VCARD' . "\n";//结束标志$ Y( w2 n$ l9 m. x; p
  39. 1 ~) i; S' d/ O8 Z
  40. QRcode::png($content);
    & t' ?: a/ `# X
  41. % N6 Z- t5 j9 S- i

  42. 9 M7 o1 X" R; Q! r# I' Y
复制代码

! n9 `9 b. ?+ ^+ F相关文章推荐:  [+ T, d1 ~) P( q/ y
1.PHP生成微信二维码实例" _' g# g9 R* F- G" R
2.php网址转换生成二维码. n* v  q# G" W7 ^, R. ~( e
相关视频推荐:- K; y0 N- E7 i
1.独孤九贱(4)_PHP视频教程
1 T5 ^  z- x# _- X: R+ l* S二、JQUERY生成QR CODE! t/ M6 X, z9 f9 u6 C, k
源码地址:https://github.com/jeromeetienne/jquery-qrcode
% a& y+ D: k% R  ~) k1 L  h; i& [& }6 o8 M9 A
jquery_create.php" _# W6 q. d. s/ e1 n! G6 l
0 K7 ?1 U: P. _
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

/ D5 X9 |! V0 ^  o, Y- X三、PHP识别二维码
* G  q& L% f; W! I3 C1、方法一' @% X- `! U1 J% ~
环境需求,安装如下扩展
7 J4 C+ X/ U4 h% Q' e( z- ImageMagick0 Y5 u6 C' M8 }7 U1 C/ J! X
- zbar
9 N- j4 w, h3 ]( p0 U- php-zbarcode: n* w) D+ G2 I+ J4 l

. H3 g8 v5 ~8 C. C: C5 A9 x5 Q2、方法二2 u% p+ k% r. w3 C
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
6 p8 G% `  ^) ~6 z; y4 x' D/ |( Q5 dqrReader类:https://github.com/baagee/php_QrReader2 A3 h+ s2 W- ?5 R

/ ?9 P5 s+ h, K4 K" V
  1. : }' G3 c! E; y) J8 ^; b
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    ! X6 z1 u3 f, ]% ^- k/ _
  3. * U' p0 [8 w1 A- I2 S. S# }+ c+ l
  4. $text = $qrcode->text(); //返回识别后的文本
    9 d6 x! i/ W; w7 ~

  5. & ~, @' @9 ~0 H4 |: x+ k
  6. echo $text;
    % T- A/ C% _- ^, S% G3 R# L8 \) v

  7. ; A3 E; G4 v  k  |/ Y. J4 n

  8. , E$ n" g1 H8 ~: r3 q* H
复制代码
$ j" Y) ^6 E1 n0 I' P
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7. `# Q/ x# ?9 [6 Y& U. F( ?

' x+ U9 N- e! ~  k* Y; _: _- e) E0 V+ A; m
* t4 R3 m8 }5 ]8 Z" I

( ~; o8 A3 B- ?/ c) W/ w; _% V+ R+ s: F" t) b
) O' }# y' t& [; |# }

) K9 E4 f$ z- R8 `
5 z" a  w" l/ w0 e, m1 I
" c; P; v( b5 A) v+ c9 M: R+ Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-4-24 12:07 , Processed in 0.131242 second(s), 24 queries .

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