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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。" z+ P2 ], ]) Q$ V9 I
---------------------------------------------------------------------------------------------------
0 [/ \9 e) s8 t) s( Q2 Z- g0 p二维码的分类4 _: V5 q2 c" A6 X- Z" r
线性堆叠式二维码
1 q3 [$ s% {7 Q
# _" `. R9 `. e9 g; D; Z矩阵式二维码
7 M+ ^: @/ M/ e* x: ?1 W: q2 z2 R/ O, t4 j3 m% V
二维码的优缺点
4 _  @% y6 ]; M+ p# F* M0 d优点
. q. s' T# S0 ?! Q( \3 x* T信息容量大5 S& F% N1 c( d* i% F( W& w

) S3 q2 j; T& w3 c7 W编码范围广
& R9 C  Y7 W# d) a$ p1 s2 M! E' i0 M* g5 g# v$ G* R
容错能力强
1 K- m6 M6 @9 W. S8 ^& e& D7 K4 I1 C/ t$ E
译码可靠性高. M" L* b6 H  D! b* u
+ C+ v& C, k6 h; Q0 k
可引入加密措施
  O0 t" [3 |" N5 T
7 q4 c5 }  q: P6 M4 ~. `$ F成本低,易制作
* V: L) }+ c5 ?# a9 |+ p, C% c7 i: O* j
缺点
( N% S+ N! W, c- D5 b二维码技术成为手机病毒、钓鱼网站传播的新渠道, y# \1 T" I: i! W: M

8 _$ K* p. J% [  f& S" k信息泄密3 P4 i9 j% v% z& w; Q& T

) n/ x7 N7 T" H6 Z6 P5 y: c目前流行的三大国际标准
& `# r! [1 w6 ?2 Y9 pPDF417:不支持中文
) l3 y9 P% J/ w8 D5 d3 W* z$ h1 p  J" z. ~6 X0 a. m
DM:专利未公开,需支付专利费用
% [  W, z/ K% }) o; \! C
9 s2 Y; O/ E, h' Z* }QR CODE:专利公开,支持中文0 X( G, j1 ?" j3 v

  P, h, {3 Y- D7 @# s! IQR CODE 纠错能力
' @! l8 d' r8 j& g( H7 pL级:约可纠错7%的数据码字) h$ p" ]( v- ^* F
1 J" O% U' R, Y
M级:约可纠错15%的数据码字
9 V% N8 @" G8 d7 Q' |4 ?
; i/ `, b" h  B, q4 @Q级:约可纠错25%的数据码字/ g% N' c6 y, U. k+ q9 }

( \  G# b, q  S9 {( e/ aH级:约可纠错30%的数据码字% H# ]: s+ C2 i2 p! k, u

# {" b6 W6 }* \7 s, d前提条件. m: x* k2 t0 ~- z( i
GD库: E9 k$ A2 H5 R7 M; }; l
! f# O7 I/ e0 t, J* I
一、PHP生成QR CODE( S; P3 T0 a8 [+ c
官网:http://phpqrcode.sourceforge.net/
5 c5 Q0 }+ j# R  O- k1 k; I3 ]" b" G, L. [+ r" K
下载源码:https://github.com/endroid/qr-code& h& }+ y; w% L  X8 |& g; v/ |: _
7 e% h9 ~+ r. m" V5 W
目录结构
( I% X4 u1 j! J$ B 6 _+ ]" y$ r+ F: @) n! c3 P

; t2 e" t+ q; |% b* I" J! }1 G1、qrcode_create.php5 ~  L+ _+ B) U: r% G: |, B
ps:生成普通二维码
5 ?+ e5 J4 k; ^: X& P
  1. $ o" Z$ _( m: c
  2. include_once "./qrcode/phpqrcode.php";/**
    ; ?% \1 h: y+ c/ J0 c, M6 J% u3 ?, \
  3. . t; D% q, c# w0 Z0 k% B- d
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径, k- i* c/ X! |% R5 V: d  @
  5. ! ]( D2 r3 [$ k
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    - q, C7 m; W5 M7 K
  7. ' y7 r; K# i8 f$ v8 c, ^/ u- F$ z
  8. */QRcode::png("abc");
    & S" O' H; F2 m4 k# _8 [3 b

  9. # k1 [" c" A! b- v" c& s6 ?8 e- c6 `8 X
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/*** L" K# ]8 W% N$ g. a

  11. $ {- D$ n8 G6 U
  12. * 生成文件到本地
    6 m! V2 ?8 \( x* G: V

  13. 0 p5 `& {4 k0 `; s  s
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    . r1 |/ n1 ]$ w- y8 T9 V) o

  15. $ [) _1 c# C8 w& M2 z& ~3 q
  16. * PS:$saveandprint源码的p6参数做了修改% `: ~& [. k% W# d6 `6 q, X) w1 T
  17. 8 k" j# G5 s, r* s
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    : Y' d+ }6 F2 ^! G) V: h8 `
  19. 3 T! o, E2 ?4 k' o
  20. % k" n( ]( z! P' w; t
复制代码
; g7 X/ ]  j, Y) ?/ r1 u! N6 d
2、qrcode_logo.php
4 d3 B# M- O) `4 C/ x( B0 Ups:生成带Logo的二维码
  1. 7 c! R+ T7 b: O( M. X
  2. /**
    ; E0 W$ c+ g6 R  r% K$ r7 H1 V

  3. 4 i5 v0 `; t: B1 m" w% x& m. o
  4. * Created by PhpStorm.6 j, q1 B/ ^8 b* x8 I

  5. % N( ]2 v$ F# l7 M4 W# E
  6. * User: user' c0 H/ t; E9 z" E! C! E
  7. . \+ ~8 `: Q  q- M
  8. * Date: 2018/8/16
    ! l5 `2 t5 B% _& {# D4 B4 @

  9. ; p; ?/ E5 \  c# |  m9 _6 C
  10. * Time: 10:43. U+ U: g; j2 D

  11. 9 V6 o7 a1 `; b7 _8 F
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";9 Q9 s- w2 N# u0 r2 l4 \- O5 K( u
  13. 5 ?# E9 F5 B! Y; J
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    7 i$ v. `5 P* U
  15. 2 \) m% ~& F% T8 x; o) Z/ g" z
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是. G; p0 |2 _+ C4 L; Q

  17. 0 J" H- k, @) f1 _) X; A5 T
  18. $margin = 2;//边距# {: v' G6 Z/ O  j9 e4 p

  19. , a" n1 `' N- u- c
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片8 E1 l' ?3 e/ |3 b3 N
  21. ; j" x+ C: b" v& X
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   9 H9 r/ q0 Z6 h1 N: t% Z# Y' [
  23. % E" j& k9 K7 K, Z" m8 D
  24. $QR = $picPathAndName; //已经生成的原始二维码图' F; W  E! Z$ M: Y7 n

  25. 3 H% Z- Q% u' v# C% a( ~
  26.     $Logo = './pic/logo.png';   
    1 \" C! |  ~; e0 K/ [
  27. * \3 k  J0 Y1 V& g& e; A- V1 L
  28.     $Logo_re = './pic/test_logo.png';   
    ; c  Q# b( z# j; n! d4 U
  29. ! N" ^% m7 }/ q# N3 ^
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   , s' v- P- {0 R# Q1 j4 }6 ^2 S- c

  31.   H& W! E: R" r7 M
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    / k! u0 `" N  _  s& y; q( `/ H

  33. - a( n# C* H3 d- S
  34.     $QR_width = imagesx($QR); //二维码图片宽度+ s9 Q/ @, ?( }

  35. , s( Z0 E: |6 ~
  36.     $QR_height = imagesy($QR); //二维码图片高度
    , ?/ }6 q& o+ A3 W/ N: x
  37. , f& ]7 o* D' x9 ~: e
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    , k; N6 x  V. A
  39. : ^( _6 p* l- J7 @: v
  40.     $logo_height = imagesy($Logo); //logo图片高度# \2 c; |9 z2 L$ K% h; ]  D
  41. $ X; a1 H# O4 U( t( r' J
  42.     $logo_qr_width = $QR_width / 5;   
    0 J8 i3 g6 W- Z4 G4 q' v/ @
  43. / a& q$ ]% Z  W* l! K9 {" Y
  44.     $scale = $logo_width / $logo_qr_width;   
    , @3 N# ^) W1 H# Q

  45. * F1 q" ~* m; C0 i5 E) a
  46.     $logo_qr_height = $logo_height / $scale;   7 A( a9 Y4 D* R4 E* Z& H

  47. 5 y5 s2 N3 |: L* r: ^9 U7 ~, h! a
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;% I: S: B* U: B
  49. 0 G. Z: [# `2 H3 \7 E
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   / H2 ?7 I4 l8 U0 Y
  51. 2 P  N4 k. K  k$ D9 b) P: _
  52.     //输出图片/ {7 _% W" K/ {3 p& [7 K. J

  53. % W$ T) N- T' _$ N4 ^3 N7 j( V
  54.     imagepng($QR, $Logo_re);
    ' `4 L0 ?* A4 D, ^! u

  55. , i7 q  j3 [+ A" }5 U5 w
  56. }1 M8 z' F9 K8 |& a4 B% ^) a: n
  57. 3 q9 h* Z! c4 S. L& `( m) v" q( F, ]

  58. - y( f% T) c- ?2 q! H3 [
复制代码
3、qrcode_vcard.php (生成电子签名)) I. s8 X; S% u7 a. Z  z

4 v+ X0 i7 f0 \) H: @vCard格式:https://zh.wikipedia.org/wiki/VCard
5 y( S" c! o/ B( R' J9 k8 ~* J" e' b0 z

  1. 4 C, {  n0 ]$ X# K+ G" u
  2. * Created by PhpStorm." w( p( b% t! b
  3. . ^2 \' N! j% V, C) g
  4. * User: user3 ]5 R5 Z1 k  O. R, x+ l  i# E
  5. . W/ c' i! E6 o6 b$ c% M
  6. * Date: 2018/8/157 D' s* t5 f3 z: e. r4 S
  7. " o- }$ c/ t' U( `
  8. * Time: 23:00
    6 V6 a, {2 R# L8 ^0 a+ x
  9. ( q" r7 J3 o2 ~4 E6 E6 Q) }$ @& t" z* h
  10. */require_once "./qrcode/phpqrcode.php";/**( E; g/ X3 A5 g1 ?1 V
  11. ; q6 t) D. [2 ]: U" q% a
  12. * 生成电子签名2 o) s3 S" x8 c! ?

  13. 4 ^7 X+ K# h0 U
  14. * PS;使用微信扫描二维码2 O4 o& [3 P$ ?. y
  15. 4 {+ p6 A. L1 p/ N
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志+ O6 v9 F, ~& d( i6 k# `4 q& D3 O
  17. # {0 E' Z! Y+ _4 L5 g
  18. $content .= 'VERSION:2.1' . "\n";//当前版本5 g3 Z' E! s+ L* l3 g

  19. ( s3 g3 U6 K5 e! B4 o) d
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    5 d. f$ P: M- G9 E( C

  21. / [' o; Z4 j  t5 G; }
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    ) p) Z+ z% V1 g  f; Z
  23. 2 w) D& d4 o; P" I' M5 w
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位$ f6 g3 O; Q; z' C( n- d3 u

  25. " X3 ?! i# o6 U; `
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    , Y! o, M: D; X; ]

  27. : i' z: D+ ~/ i* g. r0 w( o
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址" [/ |, _  q  B" C  v) W6 i" b( L
  29. 9 M  w) a* [/ u3 S( h
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    1 T$ n, Z+ v# O  Q1 Q" [
  31. # m8 x, j! {* R, k. Y
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话5 [* K8 K8 F* p! x5 |2 C9 v

  33. / Y7 d8 A& f  \6 r
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    / \% H6 B. N; L( o/ f

  35. ) G# _- w( H7 b  B
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    / o7 y2 }/ p$ B: l( g' Y. O$ v
  37. & ]0 U- w# E+ @: _4 O$ i7 f4 c% `
  38. $content .= 'END:VCARD' . "\n";//结束标志. q# f8 a! T5 B( `7 r# ]% w& {

  39. 6 N, y2 u9 w" Z9 R
  40. QRcode::png($content);
    - Z  c2 `" j8 l0 b7 D) d
  41. ! ?7 Q" P3 s: X- V! L7 p( N1 \! ^
  42. 8 J4 |# U. r% N  |+ n1 u- k
复制代码
5 n# X; Y! G% n# c
相关文章推荐:* ~! H# n0 E! B- L9 @
1.PHP生成微信二维码实例
; {' x, V9 C! G2.php网址转换生成二维码
* v. {: ^; `; `2 U( v% |相关视频推荐:
/ y) i# v3 T' V, b1.独孤九贱(4)_PHP视频教程
; ~( L4 d$ o/ m  K& {二、JQUERY生成QR CODE0 b7 o9 ?' k, P9 w0 t
源码地址:https://github.com/jeromeetienne/jquery-qrcode# [& [5 g4 @# r8 c; ^+ q' o4 ]4 j6 M

. G; b* ^9 L1 g( Z6 q4 `8 F3 ], Ejquery_create.php" W% ^: Z$ a( P' i( R
6 `* l7 i* }8 }' e* ~
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
1 a. S1 [8 Q. H* a- k/ e/ R
三、PHP识别二维码
7 [/ P/ i  K* x) p1、方法一
9 [3 V4 C2 q" @3 \* D! `3 x环境需求,安装如下扩展1 O5 d! ]3 {+ I" q6 w# P% S
- ImageMagick  u& _# m# r9 H$ s3 |9 m
- zbar
( U1 J# }3 J* H4 \2 Y' p( j$ |- php-zbarcode
5 ]' y/ T$ ?) {! \( X
+ A, Z1 c& K% B  q2、方法二
( q# N3 _7 w; Y, Q" o0 V4 RPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以& i  Z8 p9 B  ?( o7 H: w
qrReader类:https://github.com/baagee/php_QrReader
! n2 K  b' e1 B9 a% r) V, \
9 N1 x3 @# p( v. i8 Q1 J5 X2 b( s
  1. / O  u0 r1 F' U1 F( T2 C
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径2 `$ V, h) Q* C* t# |3 P
  3. % C3 N4 F0 E! \# L
  4. $text = $qrcode->text(); //返回识别后的文本" ~( T9 b8 S1 |7 Q1 e

  5. # M6 Q0 T7 C4 ?2 _8 O% C) r
  6. echo $text;, _+ u! H( e7 I! d0 Q. z

  7. 4 E$ W6 a- @+ d: d. r2 A/ d1 @( w
  8. ( {+ e, N5 f7 T" u, V2 j+ H6 L. V
复制代码

# Y) i3 Y) O  W5 b! e6 q链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y72 O0 }% k7 G6 z' {: u: R4 T
+ Q: E- f" A: F. L+ U% Q/ i2 o
: ^; ?5 M, t0 h' A) X$ A2 Z
; T( |$ x; \2 E6 S
7 C" M" a- p1 z, {
0 A$ z+ u  H7 D

, S2 @  l( h% x3 n
" s9 [6 a& [2 T, p3 L& n! G( G
  R8 v8 w- H8 Y; b  {" B2 j6 \7 n
! I$ T- v1 V, }4 t2 g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 16:07 , Processed in 0.077365 second(s), 23 queries .

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