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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
' \9 d+ @& y6 N4 V* [& ^1 N* q4 p---------------------------------------------------------------------------------------------------7 _2 C. o7 e0 y. _9 B
二维码的分类
  K2 g% g  s+ W2 n$ W! p% g线性堆叠式二维码9 `# B% e% ?7 T; N) e; Q+ o- I6 r

+ T9 @  {( U& b9 n8 P矩阵式二维码" s7 h2 |. o6 G) W6 l# w) P( T# Y
& m3 K7 G( \8 `8 A
二维码的优缺点! e- h, m1 i1 E8 M5 }
优点- v, l0 d/ I" z- k
信息容量大
( z( J8 M  M' y8 S" s5 h$ }# z7 e# m
编码范围广
4 L& e; ]+ V& _5 ~7 G% q. c% \0 Y& I, k% j2 x
容错能力强
4 A/ d) @% |/ k3 N% N1 e/ C
) p" x7 b/ d( Q8 `! {9 i& e* o译码可靠性高( r# ~+ N; x- F; Y: r

: r2 j5 u1 j: j! }4 Z  E可引入加密措施+ @6 c2 i- Q/ Z  u
. i, K# P* y; R6 ]& ]4 K0 M# D
成本低,易制作
+ R9 x0 J! r) r3 T( [/ _2 Z1 B) N) [! p
缺点6 i7 k( ~9 c" u- z. s0 ?
二维码技术成为手机病毒、钓鱼网站传播的新渠道0 j$ R7 ]6 Y6 j! T" @! G7 ^
4 ^4 L8 v  I8 z) k$ }
信息泄密
8 p( A. o" M+ [+ E# w: H3 p8 Q7 @+ J9 x9 h
目前流行的三大国际标准9 K3 W$ A0 s8 K# q+ n
PDF417:不支持中文
, z+ M& b. o) l+ }# X1 T9 Y7 `' c; w, F9 a
DM:专利未公开,需支付专利费用
5 }7 m0 K' @  p7 t6 M% ]: ]/ ?* ]: }% @& a. L
QR CODE:专利公开,支持中文* o3 I2 T. c1 ^, E% [

4 t1 g! S$ Y' Q6 c* UQR CODE 纠错能力
. M6 ]' q' j0 Q& R) lL级:约可纠错7%的数据码字* B1 s5 ]  ~9 G2 F) D$ B
5 ~' Q- M# B! t: w7 Z: h$ Y
M级:约可纠错15%的数据码字$ K. l/ c' @- z
* f* h. O  v6 {- v1 |$ f
Q级:约可纠错25%的数据码字
; d9 \) W+ K; L3 C, i
5 e6 n. r$ q5 Q. d8 h1 Q) M" gH级:约可纠错30%的数据码字, X0 g5 E# e9 _% a9 N) B8 `

0 W' A7 Z* z$ W+ N前提条件
' G4 t% p, F4 g: @7 u- z( w. [GD库, P. y' L) w: _+ o0 }7 \# R: w3 X& [

3 i$ X/ G+ _( u3 z. P) M9 g一、PHP生成QR CODE" t. d) M+ @- h: B- p5 s1 ^
官网:http://phpqrcode.sourceforge.net/
/ r; y4 J6 L$ T8 f& p
( W9 o% j' n  D; u5 a. `下载源码:https://github.com/endroid/qr-code
/ y9 V% ^; d8 C6 _# p7 s* Z: @' L! W$ B9 P: y1 ~3 l% R
目录结构
$ a+ K' P" x' Q 1 ]+ J" n7 r0 Q
; x1 H% B  |/ ?- n4 J# A; q' Z
1、qrcode_create.php
9 w7 {: N/ D# _ps:生成普通二维码
. G  i- d9 b, V+ g7 i# s% G2 c
  1. : ^  g  _& p% }0 H
  2. include_once "./qrcode/phpqrcode.php";/**! Q# Y: V& {2 a% P+ Y' d
  3. " s9 J* [7 ~  F: z
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    : J, N& ]- x4 F5 E0 `. E+ ~

  5. 1 d; k  `, E1 j, R+ t
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    # z2 R( B0 u7 \: s+ F
  7. / T4 N* y, s- V$ \
  8. */QRcode::png("abc");, y! n& [$ Q+ X: O3 Q
  9. 1 k$ H+ t* t# C! X4 W$ E, @
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    % G; A9 J0 ~6 E/ I5 _5 J- t6 s" X9 |

  11. 7 l: m0 i8 q5 l* [, o
  12. * 生成文件到本地5 f* w  p0 \/ c1 G# C: m
  13. 0 s8 B. j! X2 F. }) _, j( J8 k9 V
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    3 p" g7 j# L+ O$ M) @& s
  15. ( m% J8 C6 _) b1 h& i( Y$ Q
  16. * PS:$saveandprint源码的p6参数做了修改
    5 H, I8 ?5 Y2 V1 I* q8 P9 c- e
  17. * I: n  Q+ A1 V# d  X
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    ) D* V  t( m$ O( L

  19. 7 W% ]' ]" h# Q( @- t3 c( e1 Q

  20. 1 n( `+ J( A0 |9 ?6 S5 G( g) A
复制代码

4 ~" u$ _: x) U% {2 l& p- V2、qrcode_logo.php
7 N! v/ ^) g* F' m  ups:生成带Logo的二维码

  1. . W) }/ r+ J3 R& A
  2. /**0 v- b% }& m' r6 q

  3. 1 f% A) K2 Q- U' C3 m5 F2 G
  4. * Created by PhpStorm.6 i: ?8 ~" ]& z7 n3 c1 r$ `

  5. ) c, t7 }: F. B
  6. * User: user* G. y! X9 Y! t: [4 T5 v$ w: z# z
  7. , y; w% F) ~1 j. {6 b; F% a
  8. * Date: 2018/8/16
    ' R; F1 w) {0 f% K' i3 N# x
  9. 6 ?$ \8 O/ |% ]% Z/ Q; J$ U
  10. * Time: 10:430 r; H0 E9 d, A

  11. 5 |' g2 \4 N. z" I; Q0 A9 J- h9 K
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    ! e7 L+ J- l. k8 `

  13. 9 E9 _+ f% d% ^% M+ K. ~8 V7 `
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称& ^1 y6 ?; h9 ^# L

  15. : q6 ?  I& t2 f. {: X1 h
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    # l$ `: \7 o# M
  17. 7 V8 ~" o, x2 y, {7 S
  18. $margin = 2;//边距. m8 ^8 @/ ]* Z6 r6 w! U7 E+ s# E

  19. / R& w$ E+ t1 e3 ^
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片. w! A2 I3 ^3 F" u3 t& R
  21. ) N" }/ H. H8 l* u0 X. ^; M6 D5 |( X6 u
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    2 Y7 H% i' }; y* }! p, M( L: d
  23. 3 C3 F0 F5 v2 u# v) v
  24. $QR = $picPathAndName; //已经生成的原始二维码图! I' v' ]: M$ p- n/ |5 S

  25. ) L+ D. X$ T- s1 l" _
  26.     $Logo = './pic/logo.png';   ! y5 Q% w# F: X
  27.   [' ?3 e# t& O6 V! U
  28.     $Logo_re = './pic/test_logo.png';   & F! g1 p* v% ~: D5 Y' [% a8 M* t
  29. 1 r  a; B: O, z: q$ U
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    * f& e% [' W, Z. T" s
  31. ! v2 D  K8 h6 E( o: |* Q
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   ; o, u% n5 \3 G/ J3 t: L6 g

  33. 6 t" R! V5 p5 X  R+ V* j' @
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    * G% g) V+ y& L3 U' ^, m+ p* A

  35. 2 J% D/ w& L# q; N- |
  36.     $QR_height = imagesy($QR); //二维码图片高度
    7 V) c) I7 w! p8 Q" j/ D

  37. 4 _, C" `! o& n
  38.     $logo_width = imagesx($Logo); //logo图片宽度6 H9 \# V- i5 I6 Q6 a8 ^2 ?4 Z# @/ W

  39. " ?  ~7 g% X5 A4 c' K
  40.     $logo_height = imagesy($Logo); //logo图片高度
      G" l  o' c$ d/ |4 z2 t' C

  41. ' u* F! |4 c. b
  42.     $logo_qr_width = $QR_width / 5;   
    " w# O2 l8 Y. ~; w5 a4 }# [
  43. 9 h; j0 r7 _' U* j  k
  44.     $scale = $logo_width / $logo_qr_width;   
    5 ]7 J1 r' E$ _! y" A* |2 g, m9 Z

  45. 4 X7 E( h& e1 D& n7 }
  46.     $logo_qr_height = $logo_height / $scale;   ) K: l$ T3 a' ^, V* L
  47. ( E$ ~* T; f6 `' P
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    9 V3 Q, k4 ]# B

  49. - ^3 N( G( ~: X. s1 a4 @
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   & A' Y; o0 g) X5 X7 f. |: E4 Q
  51. 1 l, u, p* J2 c) t3 X4 m& t
  52.     //输出图片
    8 g, U. j% h& Z1 X6 B! t& _

  53. " _" s4 Y4 |) l5 i0 L3 Y
  54.     imagepng($QR, $Logo_re);! H$ c; ~6 \- }: U8 X

  55. , \% D9 Z* T$ ?0 V, ?3 N6 ^6 d* `
  56. }8 f) _, E* I) O! c% w8 U

  57.   g" Q+ U- ^5 F( y. W

  58. 6 b0 g- x. U! ^# U" ~/ i+ Y5 Q: J
复制代码
3、qrcode_vcard.php (生成电子签名)
* y, `. [- C/ C
, U8 d' K2 R( v- L, M6 w6 z6 JvCard格式:https://zh.wikipedia.org/wiki/VCard" ?* _+ N7 L) D7 G. p! `

& X) {1 ^4 A4 s9 l# p4 {
  1. 8 S( m, L+ r0 S1 [$ C
  2. * Created by PhpStorm.2 e  D- }& U" G
  3. ) L% q5 b) C/ s, ~6 \, S" q
  4. * User: user
    # Q" B% r! R+ g3 S) ^. D9 _
  5. 1 P3 d& j( I9 n/ q' g. M2 S
  6. * Date: 2018/8/15$ X+ P* \- [# v/ ?7 l% H$ w
  7. 2 @5 Y6 J5 F1 b  O4 a: }
  8. * Time: 23:00; e! N9 D$ Z( J

  9. 5 g( l9 M% H$ b: g4 U$ I+ |
  10. */require_once "./qrcode/phpqrcode.php";/**
    , L; p8 g. P0 n, T9 d/ D) S; n7 |) o
  11. ! P# E% `$ _; V0 E, R; ^
  12. * 生成电子签名
    ; w0 u% S5 ^9 v5 U+ v3 l

  13. 7 B! G6 j* d( i% g
  14. * PS;使用微信扫描二维码: u6 f, H% |5 Q# n; m
  15. 3 u: U" [5 C) n$ W
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志& p" U# C5 w' r/ y; c& l; l

  17. 1 @8 L5 z# P1 A
  18. $content .= 'VERSION:2.1' . "\n";//当前版本5 B- E& [  [8 O) J& _
  19. $ o$ E( X" ?8 T; f, `+ a# F& E
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名/ k# q1 `% B% o6 M! t1 `1 y5 m# l
  21. : q- Z' A1 h9 x# U- Y! _4 A' C1 |
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称  z% w8 f1 J$ m2 L; `4 T

  23.   k# X" s4 [3 @
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    & r6 X/ {6 g% x* S

  25. $ K; ]5 i) t! I! `' f: H' y
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话  f6 |+ i  o- \2 C
  27. 2 S0 I* h. F+ x( u/ H+ }
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址- N4 _0 |2 y" X6 m# x
  29. ' u2 d8 A1 z, y1 e' ]
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家), ]3 [" M) c) k* t8 T5 R4 {

  31. , y  |9 T& d/ K& Z* x( E/ I' y& m
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    + T* u9 ?" t& r4 |7 q# K

  33. : n+ c& }: \2 f  M
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱' m( E7 G9 R) ^6 X
  35. - @+ J4 q$ K* `/ [
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页2 P/ q* c. Y& @2 Z" o% A
  37. ' u  W! u+ `/ t/ U
  38. $content .= 'END:VCARD' . "\n";//结束标志
    ; u; N6 _. Z/ v+ ]) b$ n' F

  39. & W$ h5 F% b; k8 _6 Z8 h4 ]
  40. QRcode::png($content);
    0 |5 K: y/ Y5 g  `

  41. - [9 F9 X' D. A+ ]
  42. / G4 O- E- E# `3 M
复制代码
7 z! N$ ^9 ?6 }$ X
相关文章推荐:
5 |# p3 O6 [% ?: x: G1.PHP生成微信二维码实例
& ?3 l5 T9 N+ h5 P2.php网址转换生成二维码
% \* s* W" y$ @8 Z' [相关视频推荐:
; y6 ~+ k% @& `  r  E1.独孤九贱(4)_PHP视频教程
# ~2 B/ K2 q/ f二、JQUERY生成QR CODE
% C, W0 G6 W( v6 n源码地址:https://github.com/jeromeetienne/jquery-qrcode
  \; X' W& r( X+ y9 k+ Z7 O5 n, ?; z0 s: a8 v8 z
jquery_create.php
5 z% x% i3 {! Q! q/ [! |* H2 N: `; N# v3 [
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
- T9 ]7 X- C. Q- m% S" E
三、PHP识别二维码) x. R# t4 x4 @$ Q
1、方法一! E3 ]* K; b, E6 c
环境需求,安装如下扩展
/ Y0 c% W( J6 n7 e$ \" P- ImageMagick
2 R* F; ?$ x/ [# T- ~- T- }- X' ~- zbar: I( e) i& l! r
- php-zbarcode, {3 {, T  h: i' j: f: @% X/ n, X
/ j0 ?2 z1 |/ ]* @" W
2、方法二
5 q3 a( F* w7 c& k, v' \% vPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以% T# @2 p9 I) p; j
qrReader类:https://github.com/baagee/php_QrReader
+ _9 d7 ~' L4 z+ D) ~0 b
1 p7 S7 C8 q& D% j3 ^

  1. ! p: x  {1 p, \  B9 Z6 X) \! t
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径6 |& h7 W# P, X4 l5 I
  3. / S' d5 x2 {* x- {# h2 G7 g
  4. $text = $qrcode->text(); //返回识别后的文本7 {& K# \6 x* e
  5. 5 r) D6 l8 M' K% j( n3 P( C, M
  6. echo $text;6 H& Z( P6 n+ z: e
  7. " s9 |, ^' e% x4 X
  8. 5 w: p  k) n- T" G( Q/ I
复制代码
! t) x+ x$ ?" \3 {9 e9 X
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
# d0 ]7 w+ D3 M, ^) A- A. f) X% v; u& H( Q

; z! U2 i: r0 y: t8 {" i; C' m/ b9 X8 E! w) ~$ ]

& Z6 d& p/ K. U1 t: T, z6 g9 W. H+ A( t; K7 b
3 b8 \4 T, ?5 n- y* j
! M6 d5 J6 D1 D' o, f

# t2 N8 v+ O& s8 Q1 f5 M0 l6 P- P% Q3 s9 d( _6 G5 @$ l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-10-25 02:09 , Processed in 0.134978 second(s), 22 queries .

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