mirror of
https://github.com/lalbornoz/roar.git
synced 2024-11-26 16:56:37 +00:00
59 lines
1.1 KiB
JavaScript
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;
|
||
|
|
||
|
})()
|