roar/js/ext/dataUriToBlob.js
Lucio Andrés Illanes Albornoz (arab, vxp) 0e9d65cd52 js/: split into js/{ext,ui,}.
index.html: updates script URIs.
2018-11-26 10:22:19 +01:00

59 lines
1.1 KiB
JavaScript

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;
})()