summaryrefslogtreecommitdiff
path: root/faiss/static/js/dataUriToBlob.js
blob: 80189b8dc859e162f22e5e857fed013aca136199 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
var dataUriToUint8Array = function(uri){
  var data = uri.split(',')[1];
  var bytes = atob(data);
  var buf = new ArrayBuffer(bytes.length);
  var u8 = new Uint8Array(buf);
  for (var i = 0; i < bytes.length; i++) {
    u8[i] = bytes.charCodeAt(i);
  }
  return u8 
}

window.dataUriToBlob = (function(){
/**
 * Blob constructor.
 */

var Blob = window.Blob;

/**
 * ArrayBufferView support.
 */

var hasArrayBufferView = new Blob([new Uint8Array(100)]).size == 100;

/**
 * Return a `Blob` for the given data `uri`.
 *
 * @param {String} uri
 * @return {Blob}
 * @api public
 */

var dataUriToBlob = function(uri){
  var data = uri.split(',')[1];
  var bytes = atob(data);
  var buf = new ArrayBuffer(bytes.length);
  var arr = new Uint8Array(buf);
  for (var i = 0; i < bytes.length; i++) {
    arr[i] = bytes.charCodeAt(i);
  }

  if (!hasArrayBufferView) arr = buf;
  var blob = new Blob([arr], { type: mime(uri) });
  blob.slice = blob.slice || blob.webkitSlice;
  return blob;
};

/**
 * Return data uri mime type.
 */

function mime(uri) {
  return uri.split(';')[0].slice(5);
}

return dataUriToBlob;

})()