more functions

This commit is contained in:
Nolan Lawson 2014-10-25 11:22:57 -04:00
parent 5bb10eff49
commit 37b15fa26f
2 changed files with 66 additions and 11 deletions

View File

@ -67,6 +67,12 @@ function base64StringToBlob(base64, type) {
}); });
} }
function binaryStringToBlob(binary, type) {
return Promise.resolve().then(function () {
return base64StringToBlob(btoa(binary), type);
});
}
function blobToBase64String(blob) { function blobToBase64String(blob) {
return blobToBinaryString(blob).then(function (binary) { return blobToBinaryString(blob).then(function (binary) {
return btoa(binary); return btoa(binary);
@ -147,8 +153,16 @@ function imgSrcToBlob(src, type) {
}); });
} }
function plainTextToBlob(text) { function arrayBufferToBlob(buffer, type) {
return createBlob([text], 'text/plain'); return Promise.resolve().then(function () {
return createBlob([buffer], type);
});
}
function blobToArrayBuffer(blob) {
return blobToBinaryString(blob).then(function (binary) {
return binaryStringToArrayBuffer(binary);
});
} }
module.exports = { module.exports = {
@ -160,5 +174,8 @@ module.exports = {
dataURLToBlob : dataURLToBlob, dataURLToBlob : dataURLToBlob,
blobToBase64String : blobToBase64String, blobToBase64String : blobToBase64String,
base64StringToBlob : base64StringToBlob, base64StringToBlob : base64StringToBlob,
plainTextToBlob : plainTextToBlob binaryStringToBlob : binaryStringToBlob,
blobToBinaryString : blobToBinaryString,
arrayBufferToBlob : arrayBufferToBlob,
blobToArrayBuffer : blobToArrayBuffer
}; };

View File

@ -13,13 +13,20 @@ tests();
function tests() { function tests() {
var transparent1x1Png =
'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR4nGP6zwAAAgcBApocMXEA' +
'AAAASUVORK5CYII=';
var black1x1Png =
'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAACklEQVR4nGNiAAAABgADNjd8qAAA' +
'AABJRU5ErkJggg==';
beforeEach(function () { beforeEach(function () {
}); });
afterEach(function () { afterEach(function () {
}); });
describe('basic tests', function () { describe('basic tests', function () {
it('convert plain blobs', function () { it('convert plain blobs', function () {
var blob = blobUtil.plainTextToBlob('foo'); var blob = blobUtil.createBlob(['foo'], 'text/plain');
blob.type.should.equal('text/plain'); blob.type.should.equal('text/plain');
return blobUtil.blobToBase64String(blob).then(function (base64) { return blobUtil.blobToBase64String(blob).then(function (base64) {
base64.should.equal('Zm9v'); base64.should.equal('Zm9v');
@ -63,13 +70,6 @@ function tests() {
}); });
}); });
var transparent1x1Png =
'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR4nGP6zwAAAgcBApocMXEA' +
'AAAASUVORK5CYII=';
var black1x1Png =
'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAACklEQVR4nGNiAAAABgADNjd8qAAA' +
'AABJRU5ErkJggg==';
it('convert base64 to png', function () { it('convert base64 to png', function () {
return blobUtil.base64StringToBlob(transparent1x1Png, 'image/png').then(function (blob) { return blobUtil.base64StringToBlob(transparent1x1Png, 'image/png').then(function (blob) {
return blobUtil.blobToBase64String(blob); return blobUtil.blobToBase64String(blob);
@ -116,5 +116,43 @@ function tests() {
}); });
}); });
it('convert to binary and back', function () {
var binary = atob(transparent1x1Png);
return blobUtil.binaryStringToBlob(binary, 'image/png').then(function (blob) {
blob.size.should.equal(68);
return blobUtil.blobToBase64String(blob).then(function (base64) {
base64.should.equal(transparent1x1Png);
return blobUtil.blobToBinaryString(blob);
}).then(function (bin) {
bin.should.equal(atob(transparent1x1Png));
});
});
});
it('convert to array buffer and back', function () {
var bin = atob(transparent1x1Png);
var buffer = new ArrayBuffer(bin.length);
var arr = new Uint8Array(buffer);
for (var i = 0; i < bin.length; i++) {
arr[i] = bin.charCodeAt(i);
}
return blobUtil.arrayBufferToBlob(buffer, 'image/png').then(function (blob) {
blob.size.should.equal(68);
return blobUtil.blobToBase64String(blob).then(function (base64) {
base64.should.equal(transparent1x1Png);
return blobUtil.blobToBinaryString(blob);
}).then(function (bin) {
bin.should.equal(atob(transparent1x1Png));
return blobUtil.blobToArrayBuffer(blob);
}).then(function (buff) {
buff.byteLength.should.equal(68);
return blobUtil.arrayBufferToBlob(buff, 'image/png');
}).then(function (blob) {
return blobUtil.blobToBase64String(blob);
}).then(function (base64) {
base64.should.equal(transparent1x1Png);
});
});
});
}); });
} }