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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

cncml手绘网 门户 查看主题

PHP如何实现二维码的生成以及识别(代码) ------------------...

发布者: admin | 发布时间: 2020-7-24 00:09| 查看数: 8349| 评论数: 0|帖子模式

本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
+ O1 S, e; U! a( Y% [3 w---------------------------------------------------------------------------------------------------
: m+ q1 \) J* C& V+ B/ G# i- R二维码的分类' F7 L, C. J% c0 F, E+ x
线性堆叠式二维码
5 ?$ C; L, Q+ k5 I
4 ^; y+ E; D4 i矩阵式二维码
* o5 c& ^, C. b: i1 q3 M3 b1 j' z. a# g( p3 f
二维码的优缺点
; U% G4 v( d, N) i* _: D4 O优点
  [# m5 I3 Z* R2 [6 B信息容量大7 h, l0 V- O, B$ u) w  @
+ {# V2 L! V5 C% V! h
编码范围广7 I, ~4 ^9 n9 o
* c, h7 x( p" z+ E) o
容错能力强0 [: u" ?3 Y& r' K

' p6 d& L& c% Z7 [1 i" X7 P译码可靠性高
8 t- @$ d/ `5 R; ]* _7 C2 D2 u
' Q3 \+ c9 O1 V3 z/ J可引入加密措施# u: b3 ^  c4 u  u1 ?) x/ o; K
7 @, Q. m3 a: k
成本低,易制作" g7 U* {6 C  |/ h' L

+ E5 ]$ h* C# i缺点
5 `5 Z# q$ z+ B2 B二维码技术成为手机病毒、钓鱼网站传播的新渠道
, Q* a( s0 Y* j8 n9 J: d$ o
) T4 Y- t% G/ b信息泄密
" v+ P4 f) ~9 a7 t* w- i* A
2 ^( B+ |9 y* [* \% r目前流行的三大国际标准
0 S) I* R* O. O4 tPDF417:不支持中文+ n% {4 r2 ]; @" E. E" Y# D" ]

, h, N/ B: _% O( F  K! IDM:专利未公开,需支付专利费用" I. |9 w% Y3 J' ~

% X* P3 |9 a1 M. }: ?7 sQR CODE:专利公开,支持中文5 ?2 l. L0 V8 R# J

) |, ^8 ~) o+ Y2 ^( y' QQR CODE 纠错能力
% q" X7 F, C! l7 X/ X% C8 SL级:约可纠错7%的数据码字" Y- N, h* Y+ j5 ?" {; G

! T: x+ w- ]. f' D( D: aM级:约可纠错15%的数据码字, r% v: J1 [. q& e+ N6 ^; q

8 i! G7 R$ f2 V+ _* ~6 {3 z: I% RQ级:约可纠错25%的数据码字
( F! K) y" a  i$ n9 U$ |0 F4 l: Q& O2 Q" B
H级:约可纠错30%的数据码字
" Y1 H8 N! O" X. P: w6 M. d  P" a  e8 Z& S, [# P- \* j
前提条件. U* J& O. N' @2 h
GD库
7 N9 Y" p2 W, j* `& G7 ^" k5 Z; g! P) n/ b
一、PHP生成QR CODE& \, n1 \2 o* N4 J8 m/ s
官网:http://phpqrcode.sourceforge.net/
- E/ i' X5 @, s9 f
0 Y) `* y. S8 Y下载源码:https://github.com/endroid/qr-code3 S& `6 y% G" \5 \
; ]- f0 e4 ?8 m! u: d& _
目录结构
9 v) a% U2 m* s8 n) `* t 03130c7c8ed2925e6f0fa9bf23525edb_1573193604581540.png
- Q/ U2 W7 h( I4 L, N; r
$ L  A( m2 l2 f/ L! x  c! u1、qrcode_create.php5 u7 B( M' `0 Y
ps:生成普通二维码) P) T! d- w" F! ?
  1. 3 W$ @' y2 R4 H$ _4 f
  2. include_once "./qrcode/phpqrcode.php";/**
    # d, U* p6 R( V8 X

  3. 3 \# T7 @0 m" C5 V
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径/ p& p# D; N2 W% n; ]3 P" R) r4 k

  5. 5 }) _7 ^+ U( \# F2 d7 C2 a
  6. * 在浏览器上直接生成一个二维码(内容为abc)) c& G* K1 q: H/ [! I

  7. % X# |. J* ]; \6 A/ x& F
  8. */QRcode::png("abc");
    ' Z) P( M/ u: c, X7 _0 J& o$ A) `( ?

  9. % H4 \- _) a3 c' V5 c/ m
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    ) z1 }& v1 k+ P
  11. # p: D& \6 Z/ {  M+ ^
  12. * 生成文件到本地, z: [, @+ p) ~" r" L

  13. / }- b. ^( D/ H( F# ?4 w
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)) P; O3 P7 X% K; G
  15. # g5 {2 ?+ c7 Z- H- i6 n6 B* `
  16. * PS:$saveandprint源码的p6参数做了修改
    3 I+ V0 h" G; E

  17. / P* f! F6 r6 j( C# G
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);1 h+ p4 M  ~6 E8 S! R* V

  19. 3 a" y9 ^  N5 t$ u
  20. $ o7 X9 F4 B0 V( |: w: y: g9 V& ]1 l/ d
复制代码
, a: V2 }1 v- k# q  O, o
2、qrcode_logo.php% a1 B* \( T& |  E  O3 y
ps:生成带Logo的二维码

  1. ( `5 g3 k9 n/ Y% \
  2. /**; J; v  y% ?, Q/ d- k
  3. 4 b3 s  O" Y$ m  L7 V9 s
  4. * Created by PhpStorm.* s! q. S# B& m

  5. ' n  L4 L* J2 L4 f
  6. * User: user
    ( u2 E# Z! a& b, @7 R& d

  7. 4 G4 f4 N. m+ @+ ?) ^
  8. * Date: 2018/8/16
    7 c$ t7 n& \1 t- o% v' n# Y9 l+ D/ Q
  9. 0 i! r' X; a% q) a& Q: w. W
  10. * Time: 10:43
    , G- [6 \0 h' @& {( A" `6 ~- A9 ]0 O
  11. , m5 q/ c& T$ D9 H
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";3 W% ]- _2 @# \* F6 t* V( Q
  13. , h& I6 i2 Y2 Y. Y
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称" H6 L' k, q1 U: W/ e3 N

  15. 0 {; E  E/ _9 K1 W2 C
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    4 n' p' g# E% L0 z* \) d% @, `6 F
  17.   J- E9 c' e. j* T0 S7 F" |/ ?
  18. $margin = 2;//边距" f9 T. ]: ^+ F7 G2 g' i, k

  19. % S# ?6 \  E3 f/ z* U0 u. R" j
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    ( [+ v7 @. y+ E$ V* p( H
  21. % H: ]$ |" g# L1 F! \
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   # q3 Z0 W% o9 R6 x6 h
  23. 5 G% ^$ O2 h; D8 V: ]0 ]
  24. $QR = $picPathAndName; //已经生成的原始二维码图5 Y, |/ S$ |! P8 H

  25. % J$ ~, q5 @" z) x6 I, V, m$ S
  26.     $Logo = './pic/logo.png';   2 p  T) R, ]0 p# C: _3 Q

  27. ! q9 E; p+ _4 c" h
  28.     $Logo_re = './pic/test_logo.png';   
    5 f6 E1 F# h0 p5 `$ f6 H

  29. , y) X7 l! i0 Q$ r* s
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   ) Z1 A1 p8 O$ g9 p. Q' m" a3 n' o8 F

  31. , O5 T. _# R! V/ Z
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    + X5 r4 M( ?" M2 ?; O+ X# A
  33. $ t2 L* J6 X& ]7 i! f
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    7 E4 u( B# D  e! _- A! X0 u- k
  35. & g$ |9 E+ T1 D, o+ m. q! D
  36.     $QR_height = imagesy($QR); //二维码图片高度+ ~, @" [8 g: K: H

  37. + |% J" b: M, w/ ~! c4 c- i) }
  38.     $logo_width = imagesx($Logo); //logo图片宽度8 e; d0 ?4 y$ L" n7 S$ N

  39. / N9 ?" F1 {& j' X7 |; c: s
  40.     $logo_height = imagesy($Logo); //logo图片高度0 C  ?& ~& w% t- P' q
  41. 3 F# r& O# f# j/ O: ~
  42.     $logo_qr_width = $QR_width / 5;   , W$ u2 _3 \7 B5 ?) \
  43. ! @+ f/ Y, ^) e$ j# O5 m
  44.     $scale = $logo_width / $logo_qr_width;   : a' ]* e& p) w1 F
  45. . X& X* `8 x/ ]! M/ R8 v7 m
  46.     $logo_qr_height = $logo_height / $scale;   
    $ j6 x- e. v- G! J

  47. 0 @4 g, Y+ Z2 C& F
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    & i' C% X' B6 G/ \7 ?- O

  49. 5 W# \! m$ J& D' G7 _& K
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   - x9 ?- ~! K- G" ~- T

  51. & D& v* ?9 K! ~# Y, c1 n
  52.     //输出图片. }) ]' @$ Y" _4 K$ `% W
  53. / B* R' r; B+ E7 v! |- V
  54.     imagepng($QR, $Logo_re);
    + G5 j+ j5 c: l$ w

  55. " ?7 v8 M$ Y( a& f& f; y
  56. }
    2 B. Z+ S- p" [) _$ _8 |1 m6 t
  57. - ^5 r; f4 U1 O( M1 Q; h6 O" q# t' P
  58. ) L7 P: V- k$ n5 ?) k; M
复制代码
3、qrcode_vcard.php (生成电子签名)/ k& @9 k! W* R

' L0 c! ^) m" f% NvCard格式:https://zh.wikipedia.org/wiki/VCard
2 U( D+ a; _3 N" q  H$ K
$ i; [1 G5 B9 q1 B8 q; ]; x. o* Q: N" {

  1. 0 \* V' b4 u7 D$ h
  2. * Created by PhpStorm.
    4 b7 C# L- o) s  x$ w* z' H5 H) G# z

  3. $ ?. Q; R! T7 o2 V
  4. * User: user
    3 P# Y& D) `$ j3 t- u4 a; q8 i
  5. ! ~, Q1 q+ v6 t/ E' p: z) U
  6. * Date: 2018/8/15/ S! [+ |" h' U3 P. C
  7. ; M6 q- s, M. w7 w7 y
  8. * Time: 23:00: ~) X2 [( o  X) f/ m

  9. , Q! j! B* S: |6 w; v9 ]
  10. */require_once "./qrcode/phpqrcode.php";/*** g; o" K& J" c" r, F
  11. + R) Y( j* T1 s+ }: P0 C4 M2 W
  12. * 生成电子签名7 v+ {  B! }( |: R; Z; [: L4 o

  13. / h: L. l" @4 A3 Z# Q! |
  14. * PS;使用微信扫描二维码
    % [  ^7 S: B' I( r

  15. ' m6 e  X; q; O2 p. m: v7 {# s
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志' ?' \  C/ ]4 v# X; D+ \
  17. - m  M, y% I2 K* R' G1 Z
  18. $content .= 'VERSION:2.1' . "\n";//当前版本0 V. I7 i; r! X( [
  19. & U& ^; k, s. _* U
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    ' y) f7 N1 f; o. R* d0 n/ e
  21. 0 p' e. M5 `# \( h/ Z5 h+ `/ I
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称& j4 b. d: y/ Q; `7 \. P2 a
  23. 1 e) w3 M% N# a3 m- D
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位  E% c6 C9 [: Z/ _6 q. H
  25. 3 M, e! i. q" t; i- O" T* a& ?
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    2 z) \2 l- L+ N$ W  r% Y& F  ?
  27. 0 g7 t( l- ^2 A# z$ x
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址5 V  q. K) K3 d8 S# X% ^

  29. ) u: X: U! m2 d" f6 g
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)% @3 v2 }* q7 ^- C
  31. * z  J. b, X! h: @$ i7 t& V
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    ! n2 U) q8 _" H0 Y. a
  33. 1 A0 h# P9 k) W, r
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    ' H" {2 o# w& M* p
  35. ; s$ t6 t$ a9 J7 P5 u( h
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页: ~* A) w/ s: E& N: y9 g) G  e

  37. 8 l! y! q2 U- l$ s
  38. $content .= 'END:VCARD' . "\n";//结束标志3 E4 M1 x0 Z1 L9 m
  39. 8 ^+ \0 L# y' A
  40. QRcode::png($content);4 U7 S9 L4 M7 Y2 e8 G

  41. 7 U- A0 U$ e* ]3 O

  42.   i& H% }0 M. w6 f& N9 z/ v0 U7 `0 {
复制代码

8 y. {1 F' x4 S: K6 f相关文章推荐:
4 {$ B5 A9 y7 i0 Y1.PHP生成微信二维码实例: }% X6 E8 e+ G5 ~7 F1 K/ L
2.php网址转换生成二维码) z; E& ~$ p9 |6 Q" A% [3 d1 P; u: [
相关视频推荐:
5 x& s3 C5 k* @9 P7 E1.独孤九贱(4)_PHP视频教程0 n1 Q$ `7 l& b) ]2 P) N% ^. [
二、JQUERY生成QR CODE4 V! c' F5 e, g7 c' U7 t3 o* Q; V+ d
源码地址:https://github.com/jeromeetienne/jquery-qrcode
* ]- X2 r% S+ F
; l/ b- i7 M7 Q; z/ _3 y: ?jquery_create.php# {. b* C1 S) O; l( ]& `( f" L
# K: U" o; V5 Q& @2 E
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

0 J( o- w1 s9 F+ j/ n0 G! ]三、PHP识别二维码
0 X8 [; X) \4 e' N" ]; p1、方法一
/ t4 U+ P2 y( @+ ?+ x环境需求,安装如下扩展
9 Z* \6 @5 i5 t# H- ImageMagick5 P& r" n+ }8 A. X1 \5 b
- zbar
4 I' n! x) m7 z1 K5 m2 i- php-zbarcode
# t  ^8 E, K6 n+ W" F1 B, {8 G1 y
2、方法二
3 i2 J7 q" i  C5 t- bPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以; a2 I, ^3 G! x& N
qrReader类:https://github.com/baagee/php_QrReader! H+ |6 i2 q' S3 y4 Z7 x  i, H
" A, x1 o: B6 z5 _
  1. % U$ v+ [6 }8 l
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径7 A( m) Y$ {+ n# A" \
  3. 3 k, v+ i; Q7 O4 J; E" B8 R
  4. $text = $qrcode->text(); //返回识别后的文本
      p2 t* _% G  W! f# n
  5. ( J  L, O1 I5 m2 p  }
  6. echo $text;
    & {' j, N+ U# h9 `

  7. # q0 s3 Q& F/ u6 w
  8. 9 @0 J8 ~7 s, \3 k( V. t' p
复制代码
1 ^2 W  g: h& |9 k
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y73 [  Y6 K/ W6 [) K: O# [  F

4 G! |' x  o8 C% S+ d) u9 @) A, E; C6 u. Y( {8 G  z
' j9 r# V5 B1 L% Q/ P
3 I; M" w. Z8 x( q
& L2 k; c4 Q1 l4 k
% J; D0 N: L# g' c0 [
! a! `+ y# [0 z# X( x8 k! U* S

4 r7 q5 u) S- U- G: T" g( X+ m' E  v) ^

最新评论

GMT+8, 2023-9-30 08:07 , Processed in 0.157137 second(s), 25 queries .

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