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) {
|
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
|
||||||
};
|
};
|
||||||
54
test/test.js
54
test/test.js
@ -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);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user