UNPKG

javascript-binary-converter

Version:

A utility package to quickly handle and convert various Javascript binary objects

59 lines (42 loc) 1.56 kB
import { BytesArray, ImageCreationConfig, ToBytesConfig } from "../sharedTypes"; import { arrayBufferToDecimalBytes, typedArrayToBytes } from "../utils/binary"; import { blobToBase64, blobToCanvas } from "../utils/blob"; import * as blobUtils from "../utils/image"; export default class BlobConverter { protected original!: Blob constructor(original: Blob) { this.original = original; } async toUint8Array() { const arrayBuffer = await this.toArrayBuffer(); return new Uint8Array(arrayBuffer) } async toInt8Array() { const arrayBuffer = await this.toArrayBuffer(); return new Int8Array(arrayBuffer) } async toArrayBuffer() { return await this.original.arrayBuffer() } async toImage(config?: ImageCreationConfig) { return blobUtils.binaryToImage(this.original, config ? config : undefined)// } async toCanvas() { return blobToCanvas(this.original) } async toBytes(): Promise<BytesArray> { const uint8 = await this.toUint8Array() return typedArrayToBytes(uint8) } async toDecimalBytes({isSigned=false}:ToBytesConfig={}) { const arrayBuffer = await this.toArrayBuffer() return arrayBufferToDecimalBytes(arrayBuffer,{isSigned}) } /** * Returns a base64 string. If you want a dataUrl appended to it, pass {appendDataUrl:true} * In Node will always return plain base64 */ toBase64(config: { appendDataUrl?: boolean } = { appendDataUrl: false }) { return blobToBase64(this.original, config) } }