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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
, f4 a/ e5 U; [4 ?5 Z7 \4 x---------------------------------------------------------------------------------------------------
8 B8 [- ^$ d, E二维码的分类
9 v2 a: \0 n: _5 B4 ?线性堆叠式二维码
. W/ _- D' T3 s3 B) ^+ R
& o% S% [0 f& ~( `: x: I- Y4 ~矩阵式二维码
& M% E8 K2 ?6 e8 U9 K! F, {3 ?2 _) x8 L& l
二维码的优缺点
" Y+ [" D7 C% f( g优点
7 |: X1 P! S) c; m9 a; Q信息容量大7 X; v% t  J0 j1 w1 _$ L

6 g# H, B8 l" @/ k( _编码范围广
& u. T1 J( B- }/ W) F9 [8 `8 U. D! T" H0 c9 [/ ~! G' e. D4 a
容错能力强" I$ _6 M/ Y1 |3 p$ N8 K
3 f! D3 f! K: m
译码可靠性高" w% K+ x( w% X' R& v1 ]0 {6 o- V
& H" C- l' n( D
可引入加密措施; Y1 i! }/ V: o2 l0 `! v3 C  g6 ]

. K  B! o1 M4 ~- ^成本低,易制作
& j' a* l5 ^9 Z" t: c) R/ A9 z+ M) P1 N- q. e/ @) S
缺点
+ d' a; u3 Y, k% s- J% I二维码技术成为手机病毒、钓鱼网站传播的新渠道" v- j' ]% z( d) ^8 r

: w( D/ ~' I* Y* N信息泄密
9 h! [" R# m7 C+ d* z! u) G, l: `
5 p  }! k. V" o3 l; N$ s, G目前流行的三大国际标准* m1 S& r: g8 I& j
PDF417:不支持中文
. N# R) j) D  Z8 f8 y+ U
* J, y' q6 `4 i7 N6 ~5 Q7 FDM:专利未公开,需支付专利费用
  z- g: P! ]1 T: {0 o, i5 y& z  Q! V3 I! t/ c
QR CODE:专利公开,支持中文6 w! d; K1 F$ m: u& \
. y3 L  U' W9 E3 K1 P# Q
QR CODE 纠错能力1 \: O, L) t: b+ A+ H- G
L级:约可纠错7%的数据码字
( z& {8 [! w  w2 M' T# v
* l" T( ?0 J8 h  Y8 z' h! X; @, @8 WM级:约可纠错15%的数据码字: j6 \9 ]+ m- ?, R8 c9 O- Q+ q
$ \( K' X. u9 Z) o2 [7 f+ Q
Q级:约可纠错25%的数据码字
5 X+ v8 v% K. R
: V, |, x  g  F; g8 Q% N' EH级:约可纠错30%的数据码字+ S! ^0 w" x, e: F) u

+ n( \& O' J- }前提条件
0 h, K5 x5 O* v" W+ p- i  q! Z. HGD库- H$ u% }6 ]: C( R1 \1 ^8 E" e

, D: F, D+ i# ^3 A3 J一、PHP生成QR CODE. V. B+ \' B9 W$ h" t6 i7 a
官网:http://phpqrcode.sourceforge.net/
, J) d7 u' G/ h/ d4 e$ c* A  X/ b+ u$ @0 u" Y9 g- X- y; a
下载源码:https://github.com/endroid/qr-code, S* w. V# ^% O) h, N
1 p; q  b3 F' D1 S+ a
目录结构
/ K; k2 F/ Y: x. c+ _' ^( Z' b9 v. F 7 q) K' m8 a" m5 o/ L/ K' M' g

6 {' h2 m+ j7 O7 _/ V2 E" V1、qrcode_create.php
: x. a$ @- o- j6 x0 ?ps:生成普通二维码" g( R5 E, r6 L2 \& D( u# D2 H1 R, O

  1. % l& z' e- ?; @+ k1 A1 I( V
  2. include_once "./qrcode/phpqrcode.php";/**: C5 x" C/ h* S% n' P3 c

  3. ) P. e8 L* M3 p1 @; {3 n" P
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    . ^; O3 `" g5 D- \6 x: C

  5. " f8 U6 t% U- `4 X7 U. b
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    " C# z% H6 N6 \/ L0 y

  7. ( P+ j" Q0 _5 M0 F7 v) W3 r8 r" w
  8. */QRcode::png("abc");. E( j: n) w3 X+ |- m2 [& G
  9. 3 ~& o% M" c: z" p. x
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**2 N4 ~- A: ?6 p7 _# I5 q
  11. : a& o; t# y/ F/ a7 ?
  12. * 生成文件到本地
    ! n. {- d; {9 ?! v6 A

  13. ; J% }3 u& Z+ ]% h$ }( i% j9 I7 V
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)# E+ ]4 t4 r, ]: A# l1 s

  15. / N7 [2 V$ {: V1 e- I
  16. * PS:$saveandprint源码的p6参数做了修改: a9 m; B* o# P! ]  E+ W
  17. : I) F: o7 J8 O
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);9 F; c, J: ]% z* Q/ l' \; Y0 {
  19. - B! @' I7 f* L7 s

  20. ) o/ y+ j- d, Y+ j# ]
复制代码
; Z4 U* m& P8 J/ j
2、qrcode_logo.php
; ]6 q% G, K& K  f3 fps:生成带Logo的二维码
  1. , q2 K, w% F# W$ a; _
  2. /**( K( {$ K8 a+ t0 b9 q
  3. ( j: H0 M, S. B' k
  4. * Created by PhpStorm./ ~0 `( K9 G! X5 ?% D, F* X

  5. 8 G3 }8 s; u! Z' l. T4 P
  6. * User: user
    0 ?4 \' M- C% Y  L2 F; i! [
  7. * l4 p9 n( V7 B5 ~: u. O8 Y
  8. * Date: 2018/8/169 e" s6 s3 I: t2 c2 ?
  9. # d. B7 y2 Y8 R& R, a
  10. * Time: 10:432 H: |9 [3 Y6 w& b3 @
  11. # _( W* b+ y7 r) B2 H+ U9 O1 Y$ p) S
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";" \1 d7 B% M3 @% v

  13. " E5 ~/ [- D2 u9 v) l
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称+ O  l/ ?8 C/ j5 J% \
  15. 0 d4 `+ b) r8 c6 f0 Y$ U5 {; h
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    $ f' ?$ u8 s- f( V1 k" W( p
  17. 1 g. o4 s6 |/ U9 ?8 s
  18. $margin = 2;//边距: `2 ^: A" H, S! @4 u$ f
  19. + c& y" T0 o+ f0 A; w, K
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    " i7 n+ c0 o# w' r' O5 `7 D
  21. " Q5 S4 k( Z1 x- J
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    3 k0 {( {3 B5 e" }& |% w' C7 C

  23. , t( K/ F# H( R' v! Y7 B- Q& q
  24. $QR = $picPathAndName; //已经生成的原始二维码图# }1 r2 T0 m$ N4 w  U8 Z' E' p  {
  25. ) [! \) z! q8 `3 u
  26.     $Logo = './pic/logo.png';   
    8 }5 t' g2 e2 ^; X4 ^

  27. 8 L  k+ W5 l7 a
  28.     $Logo_re = './pic/test_logo.png';   ) h7 u# e( Y8 }. R$ m8 u, r" h

  29. 8 M. v6 V: P  K8 o; b' ]5 N( I2 O
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    . u3 ?1 h/ j& t6 ?0 {' U  p

  31. ' T. O. h7 b4 N4 m% X
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    ' Q) m/ I, d6 X7 b9 Z6 n

  33. ! [4 L3 g4 K. M1 v3 `5 D0 j. J
  34.     $QR_width = imagesx($QR); //二维码图片宽度1 y3 ~; X5 z* g) R/ @

  35. 2 q4 A4 R0 h. d. q( X
  36.     $QR_height = imagesy($QR); //二维码图片高度
    / ?  i5 {5 c6 [7 [- x+ d

  37. ' a5 Z$ S/ S. P& i
  38.     $logo_width = imagesx($Logo); //logo图片宽度4 X) V( o: i7 g$ N/ z/ c* A2 l% E; E
  39. . H0 n) L' d5 u( ~4 r5 w
  40.     $logo_height = imagesy($Logo); //logo图片高度3 I2 {9 d4 |( k  Z

  41. 9 q; ?  o4 ~' C- U
  42.     $logo_qr_width = $QR_width / 5;   ! _$ p  q; b4 Q. I' P

  43. : @# i+ l# j1 P' V' G% n# P5 }
  44.     $scale = $logo_width / $logo_qr_width;   
    % I& a1 X" Z; u/ g6 d+ T+ o7 K8 f
  45. + G, J( u# g+ J4 z; s1 L+ L0 B
  46.     $logo_qr_height = $logo_height / $scale;   
    ! e1 C1 l3 z/ ]3 z- r2 k; E* r

  47. 7 z+ ?5 A$ p  s! Y' U6 W3 n
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    ( Q& B, I3 \) ]( [5 y3 d
  49. . O* ]' N& {* m+ |+ g$ F
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    3 W  L: S" V7 _1 _

  51.   F/ S# J/ J; D+ {: m
  52.     //输出图片( q, ^" R: \  n, R% n& K

  53. 3 C4 i4 |* ~2 ?$ J$ C, W- V. F
  54.     imagepng($QR, $Logo_re);; L1 j1 N2 k, D0 }. Y2 M
  55. - r/ G8 P; f" n) `7 q
  56. }
    + }, Y3 Y0 L5 y+ D% }0 T
  57. + Q4 g: Y8 G, d

  58. 2 ?1 s6 [8 Q+ A3 ~
复制代码
3、qrcode_vcard.php (生成电子签名)
  v0 ?6 |. d1 Y5 V& j6 I) h% g8 e  L3 [
vCard格式:https://zh.wikipedia.org/wiki/VCard
) j( x% C# x5 p8 k: V- W
7 C' Q* @5 i* _; t

  1. $ |& B+ i- g, s3 v% b) v
  2. * Created by PhpStorm.' E$ q+ h, ]) t; m# N" E. p! J

  3.   ^# |/ E' ?- R; i( ~
  4. * User: user
    # [1 b( y4 o; j8 ?
  5. ( V% J; c* q3 x% O# p
  6. * Date: 2018/8/15
    * Q+ \7 ^9 m" V4 Q# f

  7. 9 R( j( F( O. Y1 P3 v& c9 i
  8. * Time: 23:00/ @9 @1 b" O9 X# p8 s' \- R' L* t

  9. ; ?; Q+ P) P, Q, e8 i( E& E
  10. */require_once "./qrcode/phpqrcode.php";/**' r" Q9 q. T! N' D

  11. 5 {) I- g, ~4 W& f6 N1 _
  12. * 生成电子签名: q$ |$ s8 d: ?- d9 x4 k

  13. 4 O3 m0 r% w3 x5 Z! D
  14. * PS;使用微信扫描二维码
    1 b; w1 ]9 D1 {$ `* j. H2 ^
  15. 1 V3 n0 p3 a# _1 _) Y4 B2 g/ d2 L
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志2 J' K1 J0 v3 p0 m7 @: d$ c
  17. 3 \" C& u" Q6 B1 z- X0 Y  A
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    1 O" O8 X" n  J0 g0 w

  19. # _$ x$ M6 I* s6 `* n
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名" S7 q8 Y' ~7 g4 x3 D+ L* B

  21.   L5 I1 J5 y2 e  x' D/ ^. {, Q7 [
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称# B0 C) S( J( u' e
  23. & N3 K9 b, i$ C; l) f# w
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位$ _: A7 U" j6 W* F8 Y
  25. $ `. Z! M" s& B9 Q
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    . I& w6 K. W/ a4 b

  27. + q- j  c4 c: X% R
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址$ A" z& s: r* y: @3 q: ]1 e- `  s
  29. 1 `, s6 p5 G* i5 \8 h; M. p( X
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)3 z, M' B7 d' T! N: G, W

  31. 5 d( h5 R  r0 l6 @& }. N
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话9 k8 L$ L9 t8 C1 O; K6 ?
  33. : r( i  ?1 ~8 [
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱5 w) H1 S6 Q! n/ |. g

  35. , r5 e9 O% X, Q; `( t+ D" _4 [% _, e: g
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    $ Z) Z7 @! P  j
  37. 3 r: R) h" x- _, Q, {
  38. $content .= 'END:VCARD' . "\n";//结束标志
    * p% T& h& |! ]* j

  39. 6 ~0 ~: p) \5 u* G6 m
  40. QRcode::png($content);* B" t; u" _6 l: f( u- {

  41. . s( o* S- p* j/ L9 U$ E" z$ a3 P
  42. . N7 h( R; ?  A. X6 G8 B
复制代码
2 j# C3 [# v8 S' J
相关文章推荐:
$ Q1 P+ w/ B2 Q1 W$ i1 P' R! e1.PHP生成微信二维码实例
4 t1 j* j, w3 C- C$ \5 u7 K2.php网址转换生成二维码
& ^2 X+ r( T7 w$ J) x' ^# z7 `3 r相关视频推荐:
! u+ y& I! w: t  v/ M: y* `! `5 z* S/ v1.独孤九贱(4)_PHP视频教程
4 Z" A$ [# M6 e( K) u- r二、JQUERY生成QR CODE  s# J/ j; P* Q) \" _2 s  E
源码地址:https://github.com/jeromeetienne/jquery-qrcode
, _* B4 o# M5 x1 I; W( B& M, t, W" J- i3 Z& P7 y3 c! b
jquery_create.php) D6 |7 j' h# i* l4 D) |! w

6 g0 D7 v. P; X$ r6 I; s* V
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

! c+ D; o0 ~* z三、PHP识别二维码" j7 O! ]1 C6 j$ A
1、方法一. R4 a5 z* S: b
环境需求,安装如下扩展
# j$ f8 ^4 F& d% E7 W- ImageMagick4 T! m& p( {0 E/ i/ g
- zbar
$ d. S- t6 z7 b2 f2 j$ y8 [: j- php-zbarcode
, T+ N5 ], p) j  l% A3 [) f5 i% m/ ]
1 Y$ s3 U, l# F( G2、方法二1 P7 I9 }6 W' p
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
/ }+ T/ J' L( e7 Z4 r# OqrReader类:https://github.com/baagee/php_QrReader. s1 b& O9 [8 B# M3 k& @- U
2 P' n& \6 s  n% [
  1. 9 x& i0 x. h8 n: }, r( W, H
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    - e' b9 N, T% \: @

  3. ( x( F: @, d! `$ c7 Z1 a$ d( E
  4. $text = $qrcode->text(); //返回识别后的文本: S9 h% x" ?' t# d( |( h/ c" x
  5. 0 z! n4 [- k# F' J
  6. echo $text;
    . a" f9 [% B) K2 U6 t' p

  7. ! F& v) ]3 C+ o' d
  8. . `1 l. \7 b5 v4 Y; I: L" L
复制代码
2 y0 @. v) C, x7 ]2 D. t
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7* Q9 I$ w! j2 A9 u0 p( I, R# I

3 t% P' a- `' Q7 }& s# A  H& b5 s6 }) Y  k( p3 [

; q+ N9 o! _' E, n: U, P; s+ r  i, t. f% y: H6 u( J
( f: m* W3 @2 M- b( X# }# E, W  d! C

% c; v' D7 K. b' \* L7 h$ Q; `( T2 S) H2 R* I

$ H' ^) K: ^- P# i5 ?, L& Y+ M! g: Q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 08:18 , Processed in 0.073485 second(s), 22 queries .

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