mirror of
https://github.com/nolanlawson/blob-util.git
synced 2025-12-08 19:46:19 +00:00
more functions
This commit is contained in:
parent
5bb10eff49
commit
37b15fa26f
23
index.js
23
index.js
@ -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) {
|
||||
return blobToBinaryString(blob).then(function (binary) {
|
||||
return btoa(binary);
|
||||
@ -147,8 +153,16 @@ function imgSrcToBlob(src, type) {
|
||||
});
|
||||
}
|
||||
|
||||
function plainTextToBlob(text) {
|
||||
return createBlob([text], 'text/plain');
|
||||
function arrayBufferToBlob(buffer, type) {
|
||||
return Promise.resolve().then(function () {
|
||||
return createBlob([buffer], type);
|
||||
});
|
||||
}
|
||||
|
||||
function blobToArrayBuffer(blob) {
|
||||
return blobToBinaryString(blob).then(function (binary) {
|
||||
return binaryStringToArrayBuffer(binary);
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
@ -160,5 +174,8 @@ module.exports = {
|
||||
dataURLToBlob : dataURLToBlob,
|
||||
blobToBase64String : blobToBase64String,
|
||||
base64StringToBlob : base64StringToBlob,
|
||||
plainTextToBlob : plainTextToBlob
|
||||
binaryStringToBlob : binaryStringToBlob,
|
||||
blobToBinaryString : blobToBinaryString,
|
||||
arrayBufferToBlob : arrayBufferToBlob,
|
||||
blobToArrayBuffer : blobToArrayBuffer
|
||||
};
|
||||
54
test/test.js
54
test/test.js
@ -13,13 +13,20 @@ tests();
|
||||
|
||||
function tests() {
|
||||
|
||||
var transparent1x1Png =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR4nGP6zwAAAgcBApocMXEA' +
|
||||
'AAAASUVORK5CYII=';
|
||||
var black1x1Png =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAACklEQVR4nGNiAAAABgADNjd8qAAA' +
|
||||
'AABJRU5ErkJggg==';
|
||||
|
||||
beforeEach(function () {
|
||||
});
|
||||
afterEach(function () {
|
||||
});
|
||||
describe('basic tests', function () {
|
||||
it('convert plain blobs', function () {
|
||||
var blob = blobUtil.plainTextToBlob('foo');
|
||||
var blob = blobUtil.createBlob(['foo'], 'text/plain');
|
||||
blob.type.should.equal('text/plain');
|
||||
return blobUtil.blobToBase64String(blob).then(function (base64) {
|
||||
base64.should.equal('Zm9v');
|
||||
@ -63,13 +70,6 @@ function tests() {
|
||||
});
|
||||
});
|
||||
|
||||
var transparent1x1Png =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR4nGP6zwAAAgcBApocMXEA' +
|
||||
'AAAASUVORK5CYII=';
|
||||
var black1x1Png =
|
||||
'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAACklEQVR4nGNiAAAABgADNjd8qAAA' +
|
||||
'AABJRU5ErkJggg==';
|
||||
|
||||
it('convert base64 to png', function () {
|
||||
return blobUtil.base64StringToBlob(transparent1x1Png, 'image/png').then(function (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);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user