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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
; {; u( ?% A, w3 Q---------------------------------------------------------------------------------------------------
5 l. p% v* V" [$ p二维码的分类
; f# Q- M9 S6 {/ O- x. {6 d) o线性堆叠式二维码2 w/ `% X" A. o+ V% g; g
0 X% E0 \. ~& E5 A5 `8 T: F
矩阵式二维码
5 V# i  a% a& s6 d, H; s1 F: E- l8 A! P' h+ E9 ?+ }9 y
二维码的优缺点
" v4 |/ ?( b% d; T. ]# \优点+ ]+ e0 l4 B( H7 q6 P5 j: N
信息容量大
# n* R0 _" \/ B' z
( i6 L" A7 A- C. ?+ |" n编码范围广4 B2 T: n" a, E" T" h

3 D2 R: e+ |/ B  ~' K2 q( E. m0 V9 D容错能力强4 m* q! q+ m4 }$ j
5 O/ |2 a# X0 Z1 {
译码可靠性高: c: t0 x0 o6 S; T4 }& b
/ Y* p" z; O2 P
可引入加密措施9 Y" F+ |- H4 J
1 d9 D, ]) q) g
成本低,易制作
1 i- f$ h/ w* W+ a
. r. h3 y1 W& k8 C3 P( F缺点
3 L8 N( r. C# T) f* S3 d) J( T' A二维码技术成为手机病毒、钓鱼网站传播的新渠道) |) W* y+ N3 M! W8 f; L7 Z

$ ?: N2 r  Q% Q* p  u) @信息泄密
/ F; g. m3 n2 P- W% S8 w* t1 v1 R
: w# x8 U# {! V4 U6 `1 W9 e6 d目前流行的三大国际标准
3 w7 b! O4 p4 I, `; ^& g( k! R! WPDF417:不支持中文& B* l2 ?6 f* a/ H( }
/ l1 P' |6 Y" _+ h  Y' M- Y, \9 Y; n
DM:专利未公开,需支付专利费用
+ O! O1 y' i* b7 o$ ~0 z$ c; S: J2 M* {7 ^
QR CODE:专利公开,支持中文
  d: [0 v- h7 V1 y4 M8 R% J  a6 Q
QR CODE 纠错能力
) ~( `8 ?" y9 _3 i2 sL级:约可纠错7%的数据码字
/ P! J8 w4 i' E& v. m; U- m2 C
) y- f( K: ?6 c6 F- T9 UM级:约可纠错15%的数据码字
4 U2 E: a/ [3 C/ n% d5 W; P$ K% D) u5 x( L  I3 l9 Z
Q级:约可纠错25%的数据码字5 K& t  S2 j/ Z& y
+ U3 H/ M+ p  x& ?, n+ e
H级:约可纠错30%的数据码字/ r& n$ v3 k; ?8 i8 e- m) b& H

" L$ C" A, x6 k* r  V% t  L前提条件8 O- k) B; G! b
GD库
; C2 i/ l5 Z3 d! z. A2 J
: ~# r& S) Q6 n一、PHP生成QR CODE
! `9 |6 ]3 {* c" m4 f/ r官网:http://phpqrcode.sourceforge.net/
7 e! t, n* t8 E# i
) X$ i7 C9 ^  D3 o5 T% G4 P% h) e下载源码:https://github.com/endroid/qr-code, ~% V/ B5 T% W8 u

. b  B& p# q" P5 \0 `/ _: S5 n目录结构6 f4 F6 ~# t8 `4 [0 R/ h* f; l

+ `7 F/ ]* C0 u; a, {! G8 f: K1 L7 Z! ]1 f, ^3 C
1、qrcode_create.php
* @  L/ y  p0 P" w. w+ jps:生成普通二维码
& W7 v" z. c, C- W1 ^

  1. 7 a( q: f; V1 ]
  2. include_once "./qrcode/phpqrcode.php";/**3 q6 y5 D) I9 m. z# @

  3. # M1 B7 g2 P7 T# ]. h! q
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    ( j9 @4 O, D* f# z
  5. 8 }: L/ G3 |1 I0 e& _  y1 e
  6. * 在浏览器上直接生成一个二维码(内容为abc)9 t) }! t" O- ]8 F7 Q" _

  7. $ k3 X( @2 K/ _1 w8 H. n$ W- q
  8. */QRcode::png("abc");
    ( C6 r' V; ]2 E, G7 q' ]
  9. ) J, }& v- c; b2 b
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    * X* l9 V$ F* S$ y7 ^! I
  11. . m- [! O6 Z* f) S, \* i) {
  12. * 生成文件到本地9 v, C5 t5 _7 J8 H
  13. 3 R  J/ `9 j9 J* C
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    # v, P0 `" B' ?0 a, a- g4 c

  15. : {$ p9 s4 F/ W. K5 Q$ G! v
  16. * PS:$saveandprint源码的p6参数做了修改/ I" D/ \: S2 j0 D

  17. ' `6 d$ w2 E, U2 m4 v
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);+ y* g" W/ h: y. q7 k
  19. , `1 A, I; h* ~7 {% L  z

  20. ( c* J5 x9 y' `3 d
复制代码
+ A4 r& U3 I% L
2、qrcode_logo.php
3 i* I) a/ x( R/ ~9 z* t6 ~ps:生成带Logo的二维码

  1. $ p% ^  H2 F' J: ?7 }
  2. /**
    1 w/ }$ y' P9 A0 M, k8 d1 P  A' Z3 p

  3. - P, b5 q% Z# k$ j3 O
  4. * Created by PhpStorm.! P( v6 T3 t0 ~+ z8 z

  5. # s, x8 K4 V2 V- c, S& N! M, C
  6. * User: user
    ; X- w. f, m" B

  7. 4 }. g; d6 }' @$ d
  8. * Date: 2018/8/165 T/ d8 O; m1 w' \
  9. - q6 B  Y) g& |  v# w1 b) L
  10. * Time: 10:43
    , I% g6 t3 U  ]8 I/ h2 F

  11. ' X* `- p' P. l7 P8 E
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";0 K  V2 S5 j" p8 ]

  13. , q( N) g6 f, C1 {" ^
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    . O/ d2 I) j- {: {! S
  15.   O9 o0 Z0 q, B7 w; w$ G7 ]
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    / f2 @! k/ W1 c

  17. 0 f  m, Z9 Y  {' o# Z
  18. $margin = 2;//边距
    5 m- Q/ [! v3 E* a. _

  19. ( H" u* Z0 U/ x' O% g) M* |4 ^
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片2 u! [- [5 o0 }- A* U" i) p

  21. " R: }. |+ K7 v( v( b' @
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   & `* J8 F+ M! K1 h
  23. - V, Y6 ]% v, b# T
  24. $QR = $picPathAndName; //已经生成的原始二维码图( ]) }5 d8 d# y6 {, D" k8 Q: K4 ~
  25. ( x/ L- Y( e8 }, J
  26.     $Logo = './pic/logo.png';   " C/ E( X/ |# j! {7 W! O* F+ K# b

  27. + Y+ t( n- D, Q' x8 |3 C
  28.     $Logo_re = './pic/test_logo.png';   % Y' m; a9 n. A

  29. 4 S0 E" A' i, r$ X4 m
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   * e4 F. P& k! s0 n3 E) @  _
  31. 3 E0 H% ~8 I$ e3 i% A' W7 b
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   4 L* g) m( N, o9 r: W0 _
  33. 8 Q3 }, @, o3 ], l/ q
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    ; s0 b1 J. h& j( j

  35. 9 X+ w4 u) V' Z9 U& g' l" s
  36.     $QR_height = imagesy($QR); //二维码图片高度0 K' R' v3 L! a6 o: _$ j
  37. 3 z% x4 W/ D0 _& g) s: i; B
  38.     $logo_width = imagesx($Logo); //logo图片宽度$ e4 p) l: W+ {5 c

  39. ; {& }. T1 ?2 S0 G1 C: W* C/ U  ?
  40.     $logo_height = imagesy($Logo); //logo图片高度
    $ l' {3 h) L; \, A

  41. ( F+ K  \2 h" H# M* g9 J0 e. ~
  42.     $logo_qr_width = $QR_width / 5;   
    3 P, Q9 ~+ I. E3 r

  43.   X9 L9 l0 V$ P" S; H5 K
  44.     $scale = $logo_width / $logo_qr_width;   - P  _5 @$ v; b4 L& f. Z
  45. , [/ N# U, G" p4 w5 w5 c" @
  46.     $logo_qr_height = $logo_height / $scale;   
    ) {  n( J. X  t- r1 Q
  47. - \1 U$ h. a0 \9 v5 J
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    6 u6 D) G- F  U% C! |# W4 V
  49. - U2 U% ~9 H# ^0 j# h: Y4 M4 u
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   ( B/ O6 _8 Q2 c& o/ e; a+ R

  51. + J2 i! n# Z8 D9 [
  52.     //输出图片0 I2 l0 j6 a& X) N; J4 c
  53. ( y7 d4 U9 b; S1 Z
  54.     imagepng($QR, $Logo_re);
    5 J: K# r( e# O0 h  [

  55. , h" Z8 ]# X" z' h  Q6 g
  56. }
    2 m9 V9 i9 t  D) ^6 |

  57. ! R% D/ Z/ P9 P: Y* K# E
  58. 7 o5 C( E6 `* ^; f
复制代码
3、qrcode_vcard.php (生成电子签名): A5 q& u! J" L$ G3 K9 H( G6 G8 e
" j" p, h$ [8 Y3 @- Q7 r5 Y
vCard格式:https://zh.wikipedia.org/wiki/VCard
+ q5 F, b7 j2 ~% M5 j5 y9 q/ \8 Y1 ^' F  x$ O- o  P- f4 B

  1. . ]& c  j: Z9 j4 ~: n' ^. T4 j7 r
  2. * Created by PhpStorm./ V, @: R- a( p$ l- J- t/ \
  3. 1 K2 z% A% g! l+ s
  4. * User: user
    - X# E7 s2 b6 x
  5. 6 [( V3 n- f6 w
  6. * Date: 2018/8/15
    4 I& |: ?4 H. _% v4 z- j

  7. $ Z& V, M- V0 r0 c6 e
  8. * Time: 23:00+ l: \+ e  G( C9 l

  9. 3 o; B; n/ L2 W* D' u  |! i9 v
  10. */require_once "./qrcode/phpqrcode.php";/**- T& d  ~2 r# e8 B' f" B* ]
  11. $ V. c" D+ L( z, b+ ^8 \
  12. * 生成电子签名
    $ O0 e! N& S9 s+ p: r  h
  13. 4 z" p7 E& f6 }2 w5 s
  14. * PS;使用微信扫描二维码
    3 t. f8 f" h. A& g: \/ v4 k6 u

  15. $ m6 ^* ]! W9 c$ y7 N4 u! u
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志/ Q( S6 _* Q, N' n, `. \3 r
  17. 4 T# z; B7 r  \6 I
  18. $content .= 'VERSION:2.1' . "\n";//当前版本% c- y& E( t7 Z6 I/ W

  19. . x* @1 d8 f' i3 ~' W
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    $ R5 J. b5 e& ?+ G. N* V

  21. $ W) f2 d7 A, G: e7 S
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    $ B6 K# n+ \& q
  23. ( v( t3 a6 h* h' r$ Q6 f
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    ' ^: s, K- j& G, N) p* }8 D6 T
  25. $ O4 N0 C1 M% Z' u. i# j
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    4 b8 y7 S& u% [, T, z: H
  27. ; T+ r+ e% m( G$ s1 `+ z
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址! v0 A4 m/ K, A* A6 o+ f* w2 Z

  29. * M+ }: k* Z' ]0 E3 U0 E5 Y2 N; q
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    7 l1 F% G, Z. t0 {, l% S

  31. - i; p! Y- y" g0 G8 _
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话1 P3 X& H4 ~! q
  33. % P7 Q# V( b1 A7 Y0 E
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱! |8 M4 k' m6 J
  35. - ]; H3 F9 c9 _6 Z2 G0 j
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    & J) |/ V/ [3 b0 {/ |
  37. 7 R$ X" p! Y- \* T" R! g5 o2 C( v/ Q
  38. $content .= 'END:VCARD' . "\n";//结束标志7 x$ K/ s7 g4 r+ d& n2 U5 l3 j
  39. + r, {5 y/ X% M7 }% d
  40. QRcode::png($content);
    + V$ K# U9 F/ c( O

  41. 7 @' h! _9 O6 ?( b4 Y

  42. % ?! H# b9 W! `$ T0 S- r
复制代码
3 J' o5 T+ N2 s  o8 r
相关文章推荐:* P! b# S! G4 C# s4 Y
1.PHP生成微信二维码实例* f7 g- {1 T, M) V. T' {; F& u
2.php网址转换生成二维码# v$ F. y/ U' P' Y/ u  ?7 [
相关视频推荐:4 t& e4 \$ `. R
1.独孤九贱(4)_PHP视频教程
3 N( s, F# G, t' b' U! [" G/ q二、JQUERY生成QR CODE2 v1 x% o* [7 ^7 }
源码地址:https://github.com/jeromeetienne/jquery-qrcode/ }3 Z! ?; v- X9 ?$ b- J
0 M' a& F- a9 V
jquery_create.php, n& q7 N  E$ S$ y3 k5 y9 |
4 y( A9 H% L3 j
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
* e0 B3 u0 h) g0 w
三、PHP识别二维码
. h" M0 T, ^: z) T7 h1、方法一' a& w2 I: E) r& i8 |$ l0 B
环境需求,安装如下扩展
9 V: q7 R0 g8 ?& a- ImageMagick1 \" J  A8 p+ m' H7 J+ N
- zbar0 b7 E; n" ]7 [" s1 e
- php-zbarcode
2 z1 C  h& h7 j6 r  _8 D  Z
' Q) o( f8 v" p8 U* X2、方法二
; U" q& u5 F: M8 r; d/ @PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以- t6 y& `6 ?( G( ~# V3 D9 \$ M3 V
qrReader类:https://github.com/baagee/php_QrReader
5 [+ U: A0 l! Q% b" b7 }. ]1 X
! O$ e2 ~; L" W7 V) G# T
  1.   {" T  |8 Z6 p1 _
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    / d* H5 t8 {5 C$ g$ k1 T) C* F
  3. 6 w" `! a' L: d: w
  4. $text = $qrcode->text(); //返回识别后的文本
    - Z4 }; p4 l) Y, _# H
  5. # i- \( }+ s* \' c. ?
  6. echo $text;9 A: x% ~" ~4 g0 ?
  7. * n7 h% q( f& |$ B/ K
  8. 9 S$ S- _; s' {9 A9 G
复制代码

% h# s6 [; f+ E! O  p5 j链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
+ p+ S8 C7 [$ D" q& P; w" `# i) p/ M' l/ W
3 N' z# Q, A; r' ~8 y( r5 a2 r
" z( W8 Z+ [7 `/ w

0 \, P! y0 e  K9 g! b" W1 X0 l) G5 ^" t" i
! ], q. p0 z, x+ D

( }# V( \* q2 \1 o
4 M5 J8 S* Y1 k$ n  e8 v/ s! m! T* e8 R1 f6 {+ |
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-8 12:25 , Processed in 0.144791 second(s), 22 queries .

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