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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
8 H( [5 b4 Q- r  k" L; l---------------------------------------------------------------------------------------------------- H' o' ]& i1 B# Y4 h4 A# _( O1 `
二维码的分类
2 v( l! o$ ?! o3 s线性堆叠式二维码, e( R: f4 x5 ~$ }+ Z* c# C, k
( R- |1 l$ I- k
矩阵式二维码$ v# f. G4 d' N. [/ Q
) Z. s. E! x) ~( E% e
二维码的优缺点
2 }. m0 I8 |; o& {优点6 I4 c  ~7 C$ V+ n  l, Z6 X
信息容量大& d' y4 j. u+ P
- ~2 }" m3 x1 B/ [) R
编码范围广  f+ }; g* n  K8 A: S$ b, j. K

& u9 w7 a& q3 I/ s0 v2 c' A容错能力强/ d" o$ }5 s) \* N0 k# I9 H0 C' }
" M% c: v9 k% {6 F" G5 p
译码可靠性高
$ I( A, U, q" |  Y& p0 L( R
% `. T: M+ y# X可引入加密措施2 |4 k( w9 r0 `! b; a* F

" ~4 t/ M) ^' T" L  A# g; o成本低,易制作5 n  q4 Z0 L* n8 i) N

' `" L" O. m' q. U3 y缺点
" e# f: ~9 A9 ?3 p& y0 |二维码技术成为手机病毒、钓鱼网站传播的新渠道
" _* D2 X" n" t& L" u1 O( T/ Q$ T
6 c7 u: b/ x, l% `信息泄密
, R0 c/ [9 d9 K
7 Y% L6 s7 o1 i目前流行的三大国际标准
- M) p9 N$ E9 V5 b4 c8 s* ZPDF417:不支持中文
% z' j5 k# @9 p+ R( J6 @: H+ {5 x' L5 U
DM:专利未公开,需支付专利费用
$ T* g6 s( O4 N( ?" L! W8 I
/ q2 A1 T$ g1 f& @3 I8 f2 j, vQR CODE:专利公开,支持中文
% o' i5 y6 A1 B8 T# j4 i; W5 P, J+ W/ ?' W: m( |+ ~
QR CODE 纠错能力/ q; X$ ?3 b. Z/ t1 ^$ x" Z
L级:约可纠错7%的数据码字( g( O; I* W3 Y+ H1 F% S
, H& G7 i& X3 l: d; Y# z
M级:约可纠错15%的数据码字1 C  L) T; z1 G. w9 i0 f
, g1 [' o) O1 {! [. c' `
Q级:约可纠错25%的数据码字3 C- n4 Z- q- c$ e9 f

3 I9 ^# d1 H$ y' A* p; TH级:约可纠错30%的数据码字
1 Q3 z% w, h6 x/ e7 l. n
5 A  l" E# |, @1 a2 k; X$ O5 q前提条件- }) A- U2 g5 n) [6 g; ^5 U( B
GD库
1 X( D3 q4 r/ r% j  x8 w% x$ o( _6 \
一、PHP生成QR CODE& f6 J& G7 k( P+ A6 M5 S
官网:http://phpqrcode.sourceforge.net/
' ^0 L+ o$ D! c8 G9 [0 M, ?7 v, v( Q% u- I% E
下载源码:https://github.com/endroid/qr-code
' v! s3 x) Q9 r
- H; P- f, j+ F* L; p目录结构
! L( K2 a8 u5 R; u# E$ }
# f. t) _: L$ ~4 N4 |2 {7 V+ c3 E: Z& {* `
1、qrcode_create.php
0 a) U2 j  {& _! x2 F% ~ps:生成普通二维码$ e. I) J+ L) S9 Q# Y7 o
  1. . y$ A- v( w; j% ]! _  E! f9 p
  2. include_once "./qrcode/phpqrcode.php";/**  Y2 S$ y9 [# n

  3. 1 @4 r2 y( h. o2 Z
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径1 U* Z! ]  i9 P# e9 G: Q
  5. 5 h0 q! A1 d) C: e$ S; J  q
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    5 _+ b2 [. I6 b$ u
  7. 0 I1 h" J  p$ u
  8. */QRcode::png("abc");  e: ~5 m6 `, }5 R% g: ]

  9. , t  ]" n) L( ]* b5 X
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    3 P& t6 n+ T0 @# ]) q* v1 I
  11. 3 [- J4 n4 P' _6 ]
  12. * 生成文件到本地. |* `. k5 R2 w! Z; Z- c
  13. ( n* ^. ]2 ~9 u8 }
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    $ Q7 Z' Y' F* L- c

  15. # U5 Q) ^3 s- X/ [8 E
  16. * PS:$saveandprint源码的p6参数做了修改+ Q0 o% }4 t8 J+ ^/ M6 O: K

  17. 6 c8 F  v* w8 S4 B/ G+ h6 }  ~0 R- [
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);4 R4 o' \' O5 E3 a8 V! W) \

  19. 5 P, s9 ~$ X" ^  |* I

  20. 7 T0 g( e) |$ [* a. v$ ?; |
复制代码

' w6 \. u& `) y7 e$ E9 ~2、qrcode_logo.php1 g  _. I* r* u# X6 p
ps:生成带Logo的二维码
  1. : q7 E, X% X/ \; R% C9 G" f
  2. /**
    ! d2 h) i. S* n: \& r

  3. 8 T6 X0 a$ E1 a9 |6 e) _
  4. * Created by PhpStorm.
    , g+ j; g& W' a- H7 b$ F. A

  5. + Z/ |" g# H9 v$ Y0 h5 g) _& ^' C$ j
  6. * User: user
    9 W& h1 @5 C; o

  7. 5 k4 N/ q9 C4 G, D$ Z# z/ o
  8. * Date: 2018/8/16
    * v+ K% s; g: B/ a% ]7 W
  9. + U+ Q- v+ i; }+ j! M
  10. * Time: 10:430 Z# Z; h1 [9 F' J: o
  11. # I; |; K6 k" U
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    ) J3 X0 X( t& N4 A+ H+ b' [
  13. + l- U  _, q! M0 e2 `1 }1 Z5 p  `
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    5 P5 Q9 i8 N' T' ~7 H* h3 f

  15. ( A, @  k" W4 e9 v4 V. x  f
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    " R, J: B$ [# q1 ], J( C3 q6 v" N- `2 ^

  17. * x( I+ t$ Y+ m
  18. $margin = 2;//边距
    ( J3 K; ~- k" _4 J9 W/ x2 z
  19. 6 ]2 X4 \# T$ v! P5 L  z. I  D
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片- f9 x, B- N$ z( N1 E
  21. ( J( G- R8 j4 {" g' I* ]; P
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    6 @" U3 j# M4 v6 o, d( B
  23. : D! m- `; m, O& j
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    2 F; \' H; L! E' `

  25. ! V# w& M: t0 b' S% }
  26.     $Logo = './pic/logo.png';   " M1 [' ^$ w) o. \+ y

  27. / M( E2 B" d& c) v7 F9 ^
  28.     $Logo_re = './pic/test_logo.png';   
    0 R3 H! J8 c# i5 W& o/ r

  29. , p9 @9 Z7 [) x
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    9 ?% F* d7 j5 C- N1 H7 k2 _& N

  31. - t+ n. p& w7 c. V3 a7 x. T$ h
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   & J; ]" O( |, T4 Y1 A

  33. / g6 l- X# M7 \: U) S
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    - Q. J8 e& L/ |' ^; }# J4 s: l
  35. 5 J3 `7 J# B2 `' w- {
  36.     $QR_height = imagesy($QR); //二维码图片高度
    3 W  y) i8 j) W. G3 h3 Y' X% L
  37. % i8 u, b( M$ Z, A. l2 v
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    , p  W; @; Y% S: m9 C/ k! }

  39. 5 K9 e0 Z$ x- q- n, f9 t# ?
  40.     $logo_height = imagesy($Logo); //logo图片高度3 G9 g5 }- C! e! `$ \5 c
  41. , `0 c  s" v* _& H+ \2 h* w
  42.     $logo_qr_width = $QR_width / 5;   
    . |& }  q( V) |- a6 ?7 k9 g

  43. , \, X+ U% A- E9 x: H
  44.     $scale = $logo_width / $logo_qr_width;   
    2 w& K/ q1 H1 `9 K7 D
  45. $ a1 K8 Z. {/ ?4 M( y' O0 S% i$ N
  46.     $logo_qr_height = $logo_height / $scale;   
      s% r/ r. Y7 H/ m( V
  47. ( `- h8 v1 V/ e8 ^
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    # y" @) O2 R7 _0 o. j
  49. ; L' a9 L9 a  |7 ^9 Q$ d4 n$ r: j
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    ' [' V; b4 M" N
  51. : w  }3 r3 @+ J! Y$ u  y3 n
  52.     //输出图片2 d$ @9 [! I! z
  53. . `- W2 `" L! j4 E
  54.     imagepng($QR, $Logo_re);
    1 Q  U- L$ L3 H4 S8 Z

  55. 7 k$ Z/ y( B  q6 V" _
  56. }
    ; o. o9 I# N. V7 ?7 h" D

  57. 6 H+ \3 W: i8 Q0 _% Z7 F% @
  58. ; Z0 o2 w- Z' y9 g, [
复制代码
3、qrcode_vcard.php (生成电子签名)
$ R; V0 v8 f/ `2 U8 N) c  T
' n% e4 p: N- ^; C6 F% j3 FvCard格式:https://zh.wikipedia.org/wiki/VCard+ S- i# c$ g  q

# {  i) U! c! p- R" B5 D
  1. ' r+ b4 Y  r; [& Y7 @
  2. * Created by PhpStorm.
    ( H, Q  m6 A$ X! k
  3. , ^8 B( b# ?( ^: P+ k
  4. * User: user
    " ?1 n4 ^& B2 I- x0 K2 Z

  5. 5 g1 w/ n* e" Q' U) b! c
  6. * Date: 2018/8/15; Y; w: a  O* @+ y
  7. % v5 ?, n% Q( G& k
  8. * Time: 23:00
    & V! [2 C5 m% ?' v

  9. + {: q  i3 d# [- O( ~7 c
  10. */require_once "./qrcode/phpqrcode.php";/**
    - [: v! M7 l! ~2 e

  11. 0 y6 I3 a5 [& C/ c% p
  12. * 生成电子签名
    ! k% X5 y' w7 c; w3 t- @+ w

  13. - K1 {" g7 y+ k% x5 C( b
  14. * PS;使用微信扫描二维码% O( A; @- |3 C' E

  15. & U) h: m% k9 d- z: n
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
      d% T% s; F: r5 }
  17. " y) y- _7 E3 `/ J$ {' _1 [
  18. $content .= 'VERSION:2.1' . "\n";//当前版本) i& K4 s& \2 ?  F& U
  19. ; R/ W6 P2 |# e& W+ w8 @
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名" C& u. L% ^7 T9 S2 W

  21. % J2 n5 _/ v5 \: e/ ~3 X- Y9 i  E
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称8 _0 s: H  l, ]0 t" [

  23. ! Q; N& q+ X9 q  K+ I) |
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位0 A; V! a: I2 |4 ^2 E- a: h

  25. ) d# ?( Y# o* W* e
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    9 R8 [8 R2 I6 }; b
  27. 6 v9 V7 p1 S: @0 p2 Y
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    + f6 n- T, C- e# W1 {4 p

  29. 5 E* r) ~4 F% p
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    5 ]* o4 x- H& h& |3 z, Q( t
  31. 5 i; _! a1 r- J& {4 O2 C8 K1 F3 g, T
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    : T1 T0 d" X4 Z: @8 k

  33. * Z) }1 U: \! Z# l4 o5 s# t
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱4 X0 U3 B1 d+ T6 V. N% P& s

  35. 4 E7 W. z; c9 M! M+ S8 [
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    . o+ S5 D2 Q; O4 Z, W

  37. ) W* j5 ~& f5 V" L( T0 R
  38. $content .= 'END:VCARD' . "\n";//结束标志5 H! R4 z. z% e; {# e* L3 o

  39. 0 i  d0 s; _; z3 l3 L5 `
  40. QRcode::png($content);
    8 q' \' \( X# ~+ L7 R
  41. # V) K+ I( @' z- i0 ^
  42. 3 g, `; }2 U; `( w( V) p) s7 H
复制代码

! _1 n( a( G1 w6 ]6 Y8 i& ^相关文章推荐:" k, ]0 Y/ Q% R' o9 o) H6 o+ S7 j
1.PHP生成微信二维码实例
3 g2 E8 |2 y- O& R  j2.php网址转换生成二维码' l7 ]1 M. ?" X. k% A$ O! [
相关视频推荐:
+ |, d7 o+ U' M  ]5 l9 x1.独孤九贱(4)_PHP视频教程
" U" A4 d5 Q# {- N% K7 z; F  ]7 v二、JQUERY生成QR CODE
4 ?7 h- j3 c; b1 @- H; x% k; Q3 J( B源码地址:https://github.com/jeromeetienne/jquery-qrcode
5 _1 u: C/ S" y5 S
1 H* C3 w. z( G$ `& H7 Jjquery_create.php4 M9 S% L: W5 h% p$ g; b* e
. Q0 _4 u" c5 ]6 E; c
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
) T' H8 k* g' y. ?. f
三、PHP识别二维码+ z8 ~6 J2 x* d  [" ^
1、方法一
, a+ @, _3 `; z* _9 _/ u1 M3 \$ L环境需求,安装如下扩展
6 c+ C  U+ a# J4 K- ImageMagick9 U, w7 p# \0 ]& N; s$ d" u( c- b& B
- zbar
9 `& Q0 s9 V' W$ z  p: Z5 O# `- php-zbarcode1 W9 u0 |6 Y  c. y; L8 T

' p) P: ~0 z; C3 ^* j+ u6 e" H+ q2、方法二
; Z& B5 j8 N8 Y% q% `PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
4 V/ O" W* O; f( t5 l7 c. c" IqrReader类:https://github.com/baagee/php_QrReader
0 G4 j! S4 h0 R5 Y. e+ ], G1 ^2 I2 E) \8 N
  1. 0 S' n5 G; I' X" F8 q+ @  @
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    0 v% N7 A9 |4 A+ q6 j
  3. + ]3 |$ e" w# p- s
  4. $text = $qrcode->text(); //返回识别后的文本' j: i; z6 Y$ y& e
  5. - T& x  y* i( O
  6. echo $text;/ i& H. w7 n: p3 B& h* q

  7. 4 S4 p' V9 f* \# ~+ e) v4 S
  8. & D3 \4 k: G; m( C
复制代码

; v* ?% {! y1 Y2 C/ R- A8 q- H链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
3 l; a7 O. Y; W: K, y
* O% H/ \( n5 Q* E' c
# w  \& n( y7 a7 u
% t9 ^- Z  _+ U+ o  [1 `
! U/ e+ Y5 g, c; v0 s- a9 V' |( |/ h
) g% \( e3 c' p5 n

4 i; T0 P" A4 g0 k  `" T/ J4 V2 F* v- n! U# ]- ^

* _5 R$ B9 R8 c" C# x7 X( G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 10:47 , Processed in 0.063958 second(s), 23 queries .

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