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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
. I/ x* |) r# x8 p- p1 j- A---------------------------------------------------------------------------------------------------
8 q, t9 e2 N& R二维码的分类
6 _. _4 b8 v3 q0 u8 `线性堆叠式二维码( O, G) G' F9 _% f
( z$ Q# m* n. v7 i5 z
矩阵式二维码! D3 o: F8 H: [0 w# K/ R
  l8 n0 |* _# Y! H$ H3 n
二维码的优缺点
1 |. z* ~8 w, F/ ]优点
+ }7 k/ z* t' F. G信息容量大- |4 z! Y% {* {; ]% d
( L* W* j0 P7 p+ O& h2 C& K
编码范围广
' y0 `4 ]6 \7 K) q  u% r9 w: H: n2 b$ I' E& L0 h
容错能力强& z, w( x4 k" E* p; K9 ^
1 J: Y: z1 a, ?4 U
译码可靠性高  S5 b( E. e5 K

- O- V. j6 W+ {, w可引入加密措施# @! ?2 j4 Z5 X0 e

, |+ P% M: D3 |% t( d成本低,易制作
1 n6 p$ b$ N! M4 e
! R% j( P3 ?& b' V% ]. P( \缺点+ o# D/ X  |8 `! Q4 {7 l0 `( z
二维码技术成为手机病毒、钓鱼网站传播的新渠道' L: M, M7 ~4 R

2 h& |+ `5 D" M( p0 n& k信息泄密
* [7 }7 C, o6 z9 T0 r! q
8 Y1 G+ ?  i3 o" G目前流行的三大国际标准! L8 M+ G% ~* ]1 f
PDF417:不支持中文. e8 A3 |8 l4 ~4 c; g5 O& d: s
' v. [6 n# z! d: ?
DM:专利未公开,需支付专利费用
+ C/ Z0 P6 A2 Q" S/ w1 L* z4 K  U# C9 W3 t
QR CODE:专利公开,支持中文  g' m: e; Q$ L* t4 V8 R

# q+ p$ w' E" p' t5 e2 v/ Z* VQR CODE 纠错能力* l3 x; Z" p6 v
L级:约可纠错7%的数据码字
) @/ s' j3 @1 h6 W
2 ]& h7 \) i  V' N& RM级:约可纠错15%的数据码字
9 U! m* U5 I2 O5 Q/ Y- N
6 u5 R: _8 Q3 D- t+ J: oQ级:约可纠错25%的数据码字: P" [, M4 W* E5 |1 r' Z2 V

) X+ h- Z. p6 i. K' l0 |H级:约可纠错30%的数据码字- b( E1 i1 ?" N2 i$ d+ A; ]3 [
# o/ Y. x$ I3 L5 Y1 U1 V3 m8 [
前提条件, C; q3 ^/ [4 d  w9 G) v/ ^0 n
GD库* ^& n5 G. c9 s

! b5 D% A( I, X- u- J+ i一、PHP生成QR CODE
) N9 F. P; Z  W7 l' A, H官网:http://phpqrcode.sourceforge.net/
( o* p5 Y7 e$ E( Q+ e$ v2 E3 ^9 g! r  O, w! t
下载源码:https://github.com/endroid/qr-code
% S$ y3 g5 C1 Q1 }" W+ `. o/ R/ k7 l- ]/ h2 Y
目录结构
! l( ?, F, s, T- I+ S) h4 l
2 Y( c  i' F1 `9 R" r) }9 [/ V
$ l$ v* l+ ^. ^! I2 n9 I1、qrcode_create.php, W# z$ r8 a: p1 h; g! p% w9 P
ps:生成普通二维码  g4 e/ C/ X4 q* d7 R

  1. - Q: ^7 _0 \" b) D  j* j
  2. include_once "./qrcode/phpqrcode.php";/**
    0 M4 d, Q5 I# ^/ J8 C( B; ~
  3. 8 \; x2 K- b7 p. F/ g+ }  k
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径" N4 y7 q6 x: K5 b

  5. . I/ W3 w  O7 u1 `: r. C6 a4 n% q' P
  6. * 在浏览器上直接生成一个二维码(内容为abc)1 V0 g* ]9 N  Z: e) {" y( Q

  7. # }0 I2 A! ]2 x
  8. */QRcode::png("abc");
    9 M  S6 x" Z) A7 \3 M

  9. 1 j, Z5 p1 k$ F, }5 H
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    9 I$ m& Z0 R5 j  Q/ a  P
  11. $ R! J# m/ j% K9 L
  12. * 生成文件到本地
    9 ?" d% g) [6 d# f% V

  13. 4 L# N, N9 y# L
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)& l) K4 l7 U+ Q
  15. / L- y$ Z: C+ n- k6 \
  16. * PS:$saveandprint源码的p6参数做了修改# L; [7 ^  I: h

  17. 4 ?  Y1 E8 M5 I. D, U+ O
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    ! M) ]; G4 y# I+ I; m  [

  19. , D4 i. ]: A1 _: H, p; o

  20. " x( f' _7 Z, f# ~7 O( C
复制代码

) _8 K2 S* t$ h$ M, F) s7 e$ f0 D2、qrcode_logo.php& y# j* n- ]! P" b* {5 K6 H
ps:生成带Logo的二维码

  1. 6 a( h9 g* M6 X
  2. /**  |4 r' e3 x7 x% _6 u3 J  d) x9 O7 R( t9 F
  3. ! ~( ]. L; A" E+ y5 ~
  4. * Created by PhpStorm.$ T! M" I9 k. G
  5. , d1 ?( H  D4 N
  6. * User: user" J; E. Z2 q! ^. n3 K+ r0 Q- J

  7. ( _& F# G# x/ f' O$ k; l$ T% F  J
  8. * Date: 2018/8/164 D7 W0 t) e  A1 j5 n' J( ?( K# C

  9. - F' k$ i" ~* h2 A( V4 o; n2 r
  10. * Time: 10:43% r4 [& w# k+ `# @) `1 H4 d6 ]

  11. 2 B& x, k( ]1 y7 Q) ^' ?$ f! Q
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    $ h' e/ g( u) N5 v0 R8 r. v* t
  13. 7 c# y) X( b: J* \9 I5 v4 N% k
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    2 S: e3 w! F5 o# G6 w
  15. ' o+ O' W5 ~! ?) g5 E; P
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    7 k: ^, ^( l! U( ?& Q: I9 H* v
  17. # Q! `& S  {  U
  18. $margin = 2;//边距# W# K' Y3 q4 R
  19. 1 ]- j; m: Y' o3 [) d7 G/ z2 [! t
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    ( a9 P: v, @5 E* Y( W* \

  21. 0 X. ^* Q. S, \) c8 I7 G+ ]9 |  U
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   . Z/ C) `7 E) z3 R+ T( p% J

  23. & p; l5 M  F0 p- `- v
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    # q% I' L( A: o2 @6 p$ C
  25. : e' P4 |2 h  D/ M3 D  I5 a
  26.     $Logo = './pic/logo.png';   
    : L3 }( h6 S" `- n' W# b- G
  27. : m0 F- f! ]& `- e
  28.     $Logo_re = './pic/test_logo.png';   ! i6 \! d" M, _8 R7 G
  29. 6 j! E9 I" }" J/ B% h& m) N* `
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    0 o# D; M0 Y; \% ?! D( v. X' k0 j
  31. & `9 P! m$ F4 W* }
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   ) v+ p: @- f& f, w' @

  33. " H  M) q; u5 s% H" r% h
  34.     $QR_width = imagesx($QR); //二维码图片宽度' t& F0 x6 N0 y% {, R& J

  35. / g" ]. t! X( F8 r
  36.     $QR_height = imagesy($QR); //二维码图片高度6 q$ w$ b/ C- L# W' K

  37. 1 Y; |4 W7 x$ z
  38.     $logo_width = imagesx($Logo); //logo图片宽度3 z; Z4 b3 F3 w& x

  39. : |" r6 q% S& U$ W
  40.     $logo_height = imagesy($Logo); //logo图片高度& C- |, C& K3 i3 C+ F. j
  41. 7 ^% N* q3 ~7 d" \9 O1 r* w) a
  42.     $logo_qr_width = $QR_width / 5;   
    : E- S6 B" ]+ N! r

  43. + p4 `7 K/ q' W1 h* [
  44.     $scale = $logo_width / $logo_qr_width;   
    1 D6 @0 z& @; U- M: d
  45. 5 p7 L* O( y" }1 f0 t) V- y& W& o
  46.     $logo_qr_height = $logo_height / $scale;   & M2 o3 J2 f) }0 \+ q  J6 Q0 N  v1 H

  47. ! D) M3 q' `  c/ J2 a) \
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    5 N& H- r0 }* ]* @  e
  49. ! w6 `1 J' h; e2 N" M6 ^: z# J
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    ) G/ k# ?) y* g2 x! d' B
  51. 6 Z1 R0 ]! f' E- ]" Q# W
  52.     //输出图片/ g* e- l1 T% G

  53. . g# S; R8 X2 y, T& t# ]" z
  54.     imagepng($QR, $Logo_re);  C& ~  x9 u# z: O
  55.   J' ~# @8 M, S% K! A6 O% z' ?
  56. }
    2 k1 D- c8 a) L; q* O
  57. + c) ^: G1 H+ N1 ?8 I; D* d
  58.   K  N: @3 a# u  K1 g1 \- U+ y6 J
复制代码
3、qrcode_vcard.php (生成电子签名)
1 H2 J5 r) h4 F1 f
  I' r5 y0 a) ^) D; o- P  HvCard格式:https://zh.wikipedia.org/wiki/VCard6 [- k+ `' R. {' R. ^- p0 ~

9 t. H: e# t0 N9 ~

  1. 7 I! X! Y, ?% v: Z
  2. * Created by PhpStorm.
    5 B. k4 `) F0 |+ _8 N) k; |6 ]4 x$ e

  3. ; c3 X0 F# E. e
  4. * User: user$ [  W  w( j' u7 x) _( t' v

  5. + m; Y- @7 H. Q; h0 k1 a
  6. * Date: 2018/8/158 Q! L+ q- m2 a9 h

  7. $ Y0 `' _) l9 g# ^4 C, o. e" i
  8. * Time: 23:00
    2 m) j% I( R, U4 V

  9. / M/ K1 z: N- k; Q8 R" G4 {. U* D4 i8 K
  10. */require_once "./qrcode/phpqrcode.php";/**2 T) X. S# \7 }" T) C
  11. . E1 v$ P3 |+ u0 m& P/ e2 p
  12. * 生成电子签名4 V9 ~, J* }8 a7 w8 i2 Y1 q& T
  13.   Y4 z- \% N% S% m2 m+ y2 r
  14. * PS;使用微信扫描二维码  m  D. Z: A0 {" ^3 d# a' J
  15. : }% |6 V0 D& Y
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    $ G* P) @! a& Z; K
  17. 2 R$ s" G! @: _+ e
  18. $content .= 'VERSION:2.1' . "\n";//当前版本  n) |, y# R$ H5 x2 l  e: j
  19. & _: X) ]9 V. i) l. S1 {
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    / C" U5 a4 s8 l( D& R$ I2 I

  21. 2 m4 R  x9 }' k/ b9 N; t9 ~
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    6 J1 @% ~: F) ~% K7 V4 f
  23. , H' Z: v8 y% t' w% x) s
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    ' ?9 c. ]$ g; f  _3 W

  25. 8 P: u, P) y6 }. [; S( ~7 T3 I
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话- }3 V: q$ b' ~
  27.   E* O, M& b4 J( X+ O) K
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    6 J. v# ]$ @8 j  ^
  29. . m, X# O5 R/ X% t
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)) w6 [7 o6 Y8 M$ ]% U) `$ G% Z

  31. : H5 P& ?+ _. h2 H- W3 y' X
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话' S. V7 ~* n& z' _! M+ p% ~

  33. ; P. J" j) q( u( `! Q' i) V+ {3 j
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    9 e: i5 B; _& b

  35. 6 \' y5 h+ Z" w6 l4 J; l
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页' i( o" ?( b0 D  v! t
  37. 3 Y1 N( S3 m  E/ e
  38. $content .= 'END:VCARD' . "\n";//结束标志
    ' h; t, n" ?$ T9 W! h  X6 j

  39. - }, d% k% }1 y8 L, `
  40. QRcode::png($content);
    3 \: ?' }' q, |( q4 H* f
  41. & Q$ g. r7 o7 U( |/ W. u
  42. 6 M/ c: x- |/ O/ Y6 l9 B
复制代码

) u; V+ u3 ]) t# c" Z9 b$ r相关文章推荐:9 ?; a, I$ R" h& i8 [! ^
1.PHP生成微信二维码实例
* h/ e8 d+ z' h9 ^8 ~$ t2.php网址转换生成二维码1 D4 Y( d4 F. O8 B
相关视频推荐:
1 C2 }% R, R# D1 [9 L1.独孤九贱(4)_PHP视频教程
  N7 b: N2 w* R  Z: K2 _二、JQUERY生成QR CODE% d2 d- T+ H& w" p4 s( u
源码地址:https://github.com/jeromeetienne/jquery-qrcode" Z& |# {* w. |3 _/ k

2 s* K. r: X; S- w% v2 [; |jquery_create.php' I" d4 T& \/ E. |: |5 c* w  a$ D  `

4 L. ~3 H7 F+ g" O& g
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
& K# i! t2 Y. U1 `& w. K3 D) k
三、PHP识别二维码
% e- _# `9 B9 A2 @% t$ G* p1、方法一4 p) h& }( T6 s5 @4 Q
环境需求,安装如下扩展% k( |: i" w( j/ E4 G  L
- ImageMagick
% r- }, n; q0 \/ P8 S- zbar
6 E! p9 M! q- a- php-zbarcode
1 K- g) ~1 g; g$ _! ^; l$ T) W
# a$ E6 K4 Y! z9 `2、方法二) E' W: e' e2 O; w
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
: T3 m9 @5 V: F, |* oqrReader类:https://github.com/baagee/php_QrReader* f7 K' x% K/ E/ R  v

2 C5 d, [2 ]( W' p0 {; I6 ?' D
  1. ; J1 L- X9 e/ X# F$ x# Z
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径! p5 E9 M! K3 |) L/ p

  3. 0 Q& k, Z( g' a! {' _. f
  4. $text = $qrcode->text(); //返回识别后的文本
    4 U, M- [& M6 @7 z
  5. ' j" G$ i0 f+ e
  6. echo $text;/ Y( l  _/ B8 z. E  A% \
  7. 0 P0 H4 |9 T* e: `0 K) H" W* @
  8. 6 y3 Q7 P2 i% l. a& g1 E8 a
复制代码

( B  l! I9 E+ B' y: \链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y74 z' u9 T4 q, ?7 N% U" [
: D; d- k) ~# n

3 ^" w2 @+ ?: n7 L
& X1 i- F1 R3 J- D+ C0 f& z- J4 V8 H( x" F; {6 r# K) a

. f* E6 f5 i" [; @, W9 }
; p8 X& D. c5 h) N2 Z: K: D  \
/ W  \& ~' j8 Q/ e9 Z9 |& g; ^, ]9 C( B7 [: z2 C# z- J

! a( d1 J# h7 e; {  _# [; b! ?+ ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 13:05 , Processed in 0.057695 second(s), 22 queries .

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