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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
. n' ?/ ^# W8 u9 E# ^% |---------------------------------------------------------------------------------------------------! n# r& {0 k3 ^* r& s7 [9 Y
二维码的分类
2 p4 n) _% j2 d$ w  x+ ^0 P3 u线性堆叠式二维码
5 l5 l/ n3 y3 ~0 Y, ~6 g
$ I4 g/ e2 M/ u矩阵式二维码
7 `: ~- d8 |7 ]' W* C! x0 f; K' j' j7 ], A4 h& M
二维码的优缺点' j/ G3 g* r% _  h# q% Y4 O8 o# @0 \$ n
优点2 |" A) r1 P; C: l1 @
信息容量大& B! ]3 Y2 t9 d9 s
1 p! ~9 V! N* \- e
编码范围广9 K  @% r( K+ H. I# l
# F  p) X' \2 n! Y1 @
容错能力强
4 c" p7 z9 N( |1 ?# p; G$ Q- g% k2 b. B' _7 {
译码可靠性高
8 }3 w3 q; h+ r, e5 o& D7 j! G/ d' w  N) W, u
可引入加密措施$ F* Y# A/ s6 u* X0 v6 W8 O7 v
: C7 k: l; q/ B
成本低,易制作4 n& b$ A$ {6 d  }4 S' H" H

" Z2 \$ n% Z0 T; A. Z缺点
5 R2 |7 o( F6 t! `) n二维码技术成为手机病毒、钓鱼网站传播的新渠道9 a* ?  D: V5 B) w: U
8 d7 W$ h% ~0 s; Z
信息泄密2 g4 J7 F* s: \. T) D% P$ c$ M
# k8 J$ P) H/ G& x
目前流行的三大国际标准. i$ Z$ g% A! ?* F. l. N; t. x7 M: R
PDF417:不支持中文
6 x4 u, n- A: Z. L0 ]3 V( ~& x3 e! n
( q% [7 o; K* jDM:专利未公开,需支付专利费用
' m6 K* E3 N* ?" ]1 h, D# L
& F( q' o2 S4 U& h/ B* VQR CODE:专利公开,支持中文
3 q7 |& E- W1 Z* z+ {
5 h+ P7 f. }# ~) D8 Q. KQR CODE 纠错能力
- N4 H( P" z+ E( o; x  dL级:约可纠错7%的数据码字
, v( D: a  M! ?1 z" ^3 g
. r/ n) Q3 l6 r1 I6 j4 F& uM级:约可纠错15%的数据码字
* V" `% c! F. \. P, O) n" ~
6 m+ T, i8 e8 T% qQ级:约可纠错25%的数据码字* B( N! {' N: y9 ^. c
& l  g1 N- B. l: |& z- A0 B7 h
H级:约可纠错30%的数据码字1 t. M4 [2 g; X7 G- W- z& i

; [( M, n! Z( _' @7 `0 N前提条件) ?8 H0 I) f# d6 H
GD库$ m# n' W" Y8 `# a* {  \$ M
1 G) _% h' Q- c1 k( a/ L9 ?) w1 Z
一、PHP生成QR CODE# n* E/ H0 V7 Q+ P; A) [0 v1 I
官网:http://phpqrcode.sourceforge.net/- F0 e- T1 I7 }: ^) B9 x
, [/ M* x" c7 o+ D- C- J
下载源码:https://github.com/endroid/qr-code/ f6 E; I/ C3 C5 g
8 `1 c4 L5 x( I8 N# w" ~. ~) Q
目录结构
1 v6 T. W& |( k/ a7 U9 A 0 z$ v  z+ A0 d9 b' b

8 F9 P9 c+ e% @. ^1、qrcode_create.php0 [% h  \+ ~* s2 b2 S
ps:生成普通二维码! G, o$ s- e% ^5 f  ?: H
  1. 8 M# e6 O7 w( @
  2. include_once "./qrcode/phpqrcode.php";/**$ x8 w, C- j; Y8 n' W$ j

  3. 0 l/ X, F+ a+ }' d" a- a1 X- }
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径, F. i& @9 T7 X% R; r# A
  5. 2 g( P5 J7 n) A1 T
  6. * 在浏览器上直接生成一个二维码(内容为abc): ^" W  n6 p- J) ?+ u
  7. 6 @  N5 F% }2 b3 X( [  q2 e) b5 L
  8. */QRcode::png("abc");
    - F, w) v5 l7 W, s0 n, u' E
  9. & o& S& v5 J5 C( ], ?
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    3 S5 @) _0 p' ?9 \. I
  11. ; k' q8 n4 l. ^! g
  12. * 生成文件到本地
    $ U. @" A' ]3 U- i5 ~

  13. * @$ e1 I$ \$ ]: a" n, _7 h! O+ @
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    6 F3 c+ H8 b3 H( h7 v
  15. ) e5 F2 s: X1 u" B
  16. * PS:$saveandprint源码的p6参数做了修改5 W9 p- }% O; P% X
  17. & m3 D( a4 ]  j$ N1 i8 h  p
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);4 I& c; ]6 U9 H# u, f8 V& S$ [" S

  19. : t# H* @6 r- I2 x
  20. # O3 d8 i. g) U
复制代码
- @5 _; d( ~3 y
2、qrcode_logo.php/ U" S1 h% z1 Q! v( P
ps:生成带Logo的二维码
  1. 6 h: K  {. m4 C) g! q
  2. /**  \# k% x* N( |5 M7 N

  3. 3 ?' ^- G4 {2 e
  4. * Created by PhpStorm.
    % D( e5 y+ n* A  S( Q' k, J

  5. , j% I; r' B2 o+ ]" y0 n: h  _
  6. * User: user
    " F; y/ K8 D) M) E/ ]4 |) u" M

  7. ( t: S) z' l8 e6 X2 C0 ~3 j
  8. * Date: 2018/8/16
    * O8 O/ |3 l9 k. D7 ~+ `( l
  9. ( u8 {. [/ {* w+ M7 G& H' E, e
  10. * Time: 10:439 n& d* P' N7 V9 L  v/ X5 C6 {
  11. # ?. S- v# y7 |  H* O5 H
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    - F1 y$ A8 K- i! N

  13. & L0 Y; a+ `# Q- ^. H( A' F+ j
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    ( ^, D7 L9 E4 g0 O# }( o/ V3 Y
  15.   Q+ q: p1 Z7 O. g) N
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是; ~6 \: j! X% D0 _1 m( v

  17. * P& s& ]$ W5 ^, s
  18. $margin = 2;//边距
    4 \8 C/ V( h+ X9 M

  19. 8 {0 V$ v3 X( P& L
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    : F4 M! W2 K9 B, L& _( i# _8 q0 b3 O
  21. , V: X7 T. e1 P
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    ; Z% x& l) O( s2 ~

  23. - @8 K% t. @$ R  K/ c% b
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    6 u6 s6 m! Y( q# L

  25. . H1 |1 G& z( ~2 u3 N' D/ x8 M: S
  26.     $Logo = './pic/logo.png';   
    7 L. e( T4 ^" P7 [! I2 C9 _

  27. & k* E! n( m9 W% g- A
  28.     $Logo_re = './pic/test_logo.png';   5 j8 r6 l5 X. W; K) R# k( {/ `
  29. 5 A  l$ E$ [9 L1 v# D3 B5 i
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    3 o: v2 D' l0 l; A! ]; C2 A  d

  31. % K1 }0 k4 Z6 i7 w
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    ! N4 F8 _& o1 h6 Q: }# U. t
  33. % A/ D7 f0 T5 q) O8 x
  34.     $QR_width = imagesx($QR); //二维码图片宽度/ A3 ]9 Y+ k1 {" F& d

  35. # w$ l  [8 q1 m% D3 z$ `
  36.     $QR_height = imagesy($QR); //二维码图片高度
    5 N- T; C! J9 a. f8 `8 w

  37. 2 ~% z  U1 E4 ~  A5 j5 K
  38.     $logo_width = imagesx($Logo); //logo图片宽度8 G5 U# z" {2 r% m/ k% L% U

  39. & n7 a$ H' X! k
  40.     $logo_height = imagesy($Logo); //logo图片高度
    4 K# G. Z8 e9 t; |; _- L
  41. 6 y! o5 a. K& n' p8 O+ L
  42.     $logo_qr_width = $QR_width / 5;   
    4 O, l0 T  ~: Q  S/ L
  43. 1 ^7 C; R5 X% {; ^8 H4 }; n
  44.     $scale = $logo_width / $logo_qr_width;   
    ; N6 [" A  L: _# F. H+ O8 b

  45. % X. a  ?) o9 Y! {7 }
  46.     $logo_qr_height = $logo_height / $scale;   3 Z' Y) g' F; s0 B4 E5 A

  47. 0 C% p. ?. j, W7 t8 }
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    1 e+ ]& `0 r+ x; r, l- \6 z
  49. : @' D. D: L' j: P0 o+ X
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   ( g) R; ]) s# ^% C, O% [; V/ q. T
  51. & @0 J0 H$ h6 Y1 R! A' j. h
  52.     //输出图片
    - [7 O. Q  r% s3 A( J

  53. 1 w- g' `  X. e# L4 \
  54.     imagepng($QR, $Logo_re);
    " i$ R; |4 y# U7 G
  55. 6 V& N! V" C7 n# K- ?- x
  56. }6 Q$ O8 y% V- T! e% X
  57. 1 X5 s5 d2 A; [: E- d; p
  58. ( [% C1 {1 K0 x0 t4 l9 P! j
复制代码
3、qrcode_vcard.php (生成电子签名)+ o. C/ b& L2 b% v; p* Z
$ W7 R9 |% I" [# b: l
vCard格式:https://zh.wikipedia.org/wiki/VCard3 t8 ^# @$ M$ }: e( b& V

2 P* \7 n& Z* }/ t( p* {

  1. $ s5 ^3 u* e/ Q
  2. * Created by PhpStorm.& g/ H  t( M! J, u% n# g

  3. - R: D) }7 K+ Y
  4. * User: user
    ( u" h! T, k7 T) y/ j
  5. * `/ R# f+ o+ ?! s
  6. * Date: 2018/8/15
    6 m3 q& h3 l% Y+ [6 ~& X- i1 c# B% {' c
  7. & o; U+ J8 _. D7 X
  8. * Time: 23:00
    # ?/ t' X. b7 K
  9. 7 U$ T6 X: H2 l: O
  10. */require_once "./qrcode/phpqrcode.php";/**1 [) L- ]& o/ N/ X5 A
  11. $ L. T" J, v1 T0 z0 l
  12. * 生成电子签名5 X; b/ [% l' `# s( d) M8 v) R
  13. + E2 R, ]$ X  n3 j; O6 {
  14. * PS;使用微信扫描二维码
    2 U) m0 G3 D# ]- E3 A
  15. ) j+ D( W8 w1 [8 j+ J
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志* b1 E5 O9 `* s7 S* J. s

  17. $ T7 E% G3 k( S( F5 y
  18. $content .= 'VERSION:2.1' . "\n";//当前版本. n7 T# V8 M. ?' p0 E, s. Y

  19. 6 o, a) k9 V( F5 N
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    * H( ?' e/ F/ n8 H2 R+ j; H/ D0 V
  21. 9 R! q1 L! k0 Y" G6 _
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称$ F8 G# m- j" ^5 [6 F* _! ]
  23. + H6 x- T! s% N# L) K# ~
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    ; |9 g1 [  g0 g# W9 r& w. M$ c' f+ V

  25. 3 l1 @; f* v1 c, c" U7 }
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话% B6 `9 n8 u: j8 t* L2 M7 p+ m
  27. 0 D5 V8 h5 `5 `9 N/ X' E( a+ D- p
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    5 ~$ f) e4 F# @# V$ W9 m

  29. / d. V1 z" N# L6 f& Q6 z' a% B
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    3 H0 Y; j9 a1 _/ T% s
  31. & O, q8 s; h7 @0 o. s+ a* S! q
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话1 q; a. z# Z: p" j. G/ }- \
  33. $ \' F, O$ a, h; s9 p/ b
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱: a  S, n* O* ]5 C% p0 |1 \2 I
  35. / K' T; a/ Z" M! Y
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页! v/ R7 y# ~+ L+ l* @9 d- n
  37. 6 }' ?7 J. t3 B, ~$ P6 y) I
  38. $content .= 'END:VCARD' . "\n";//结束标志
    $ p! b9 T1 b* W4 X' a& L

  39. 5 B& ~- r6 v3 N: l
  40. QRcode::png($content);* j! q- d6 c4 G. n' T: b( ?+ {

  41. / f6 ^3 J' Z% O' I: t! [
  42. ' [$ m! r) j) o
复制代码
; A# q, I* }3 j
相关文章推荐:8 o8 G) V. [& R3 d- @
1.PHP生成微信二维码实例. P# R# G) ~8 u9 S
2.php网址转换生成二维码5 P, W% c% ], h: ^+ I
相关视频推荐:
/ z" y' _, n: `! x1.独孤九贱(4)_PHP视频教程
. X2 N7 @8 I( A0 f/ o二、JQUERY生成QR CODE  v0 N2 m$ ^  ^5 B! w
源码地址:https://github.com/jeromeetienne/jquery-qrcode+ t5 j+ `, P, U  A: n; B
) ~6 Y1 K) s9 ~) u, j
jquery_create.php# l& z0 I5 H' E: f3 J3 q* f* J
$ Z1 h/ Q# {- f, ^9 h3 J4 M- U. ^1 m
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
) Z5 a# j* Z, V9 q
三、PHP识别二维码
' U0 r- v3 h( d5 R% E: V4 X# t1、方法一. t  d8 y/ r6 n- `# l* o% Y
环境需求,安装如下扩展
  l" n3 r% F# Z- v- r, T5 l3 y8 z" R- ImageMagick
* i* b$ l  z. [* v- zbar- s5 g0 {- B, c& e( T# j# G
- php-zbarcode
' e; [/ D$ W7 O% |7 Y
7 a# w5 d! E& v# P+ O- y2、方法二
: D. k9 @3 |$ w) EPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
' C# X) m. P2 ?: d6 S0 @qrReader类:https://github.com/baagee/php_QrReader2 `1 l/ z7 p- N+ |& U7 @% J9 K
; |% y$ c0 _2 x% g, s: H3 G4 q

  1. ' ~8 Q/ y6 j! Y( m, U* K8 f5 X' H
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径& P$ N/ L; P$ q" M- H; R; b
  3. 5 w; O2 U: ~( D( O# q# |- b9 p
  4. $text = $qrcode->text(); //返回识别后的文本1 X0 v/ e0 X1 r/ W: R$ ~$ A3 S

  5. & y; \2 z( L5 K! E( Z* n& w
  6. echo $text;
    0 w. ?: R, x- ?* J: U

  7. $ j3 b/ F: t- I/ \

  8. ( x3 e( i) e0 s9 v& x$ q
复制代码

% x* Y' y; ~# ~链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
+ |- P* V) ~5 W1 Z0 F
! Y- q% e2 N$ Q8 H5 s, `
" `7 U0 w2 _! J' R# I" D7 f: b. g- }9 ?  S! j
, F7 K% t! G( ?) g! `
% K% s! D# Y; Q- v6 Q; g
+ n. g- h- k* J" U/ i; S; Z
* A! s. E! G! G0 B' S

, g! e) t. H) d0 Y2 f4 K
  V) C* Y' T2 m) _" \9 D5 O2 N, w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-19 23:58 , Processed in 0.063035 second(s), 23 queries .

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