UNPKG

@nlabs/gothamjs

Version:
37 lines (36 loc) 4.55 kB
const convertFileToBase64 = (file, maxSize) => new Promise((resolve, reject) => { const reader = new FileReader(); reader.onload = () => { const image = new Image(); image.onload = () => { const canvas = document.createElement("canvas"); const { height, width } = image; let updatedHeight = height; let updatedWidth = width; if (width > height) { if (width > maxSize) { updatedHeight *= maxSize / width; updatedWidth = maxSize; } } else if (height > maxSize) { updatedWidth *= maxSize / height; updatedHeight = maxSize; } canvas.width = updatedWidth; canvas.height = updatedHeight; canvas.getContext("2d")?.drawImage(image, 0, 0, updatedWidth, updatedHeight); const dataUrl = canvas.toDataURL("image/jpeg"); resolve(dataUrl); }; const originalBase64 = reader.result; image.src = originalBase64; }; reader.onerror = (event) => { reject(event); }; reader.readAsDataURL(file); }); export { convertFileToBase64 }; //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2ltYWdlVXRpbHMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5leHBvcnQgY29uc3QgY29udmVydEZpbGVUb0Jhc2U2NCA9IChmaWxlOiBGaWxlLCBtYXhTaXplOiBudW1iZXIpOiBQcm9taXNlPHN0cmluZz4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgICBpbWFnZS5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIC8vIFJlc2l6ZSB0aGUgaW1hZ2VcbiAgICAgICAgY29uc3QgY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICBjb25zdCB7aGVpZ2h0LCB3aWR0aH0gPSBpbWFnZTtcbiAgICAgICAgbGV0IHVwZGF0ZWRIZWlnaHQ6IG51bWJlciA9IGhlaWdodDtcbiAgICAgICAgbGV0IHVwZGF0ZWRXaWR0aDogbnVtYmVyID0gd2lkdGg7XG5cbiAgICAgICAgaWYod2lkdGggPiBoZWlnaHQpIHtcbiAgICAgICAgICBpZih3aWR0aCA+IG1heFNpemUpIHtcbiAgICAgICAgICAgIHVwZGF0ZWRIZWlnaHQgKj0gbWF4U2l6ZSAvIHdpZHRoO1xuICAgICAgICAgICAgdXBkYXRlZFdpZHRoID0gbWF4U2l6ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZihoZWlnaHQgPiBtYXhTaXplKSB7XG4gICAgICAgICAgdXBkYXRlZFdpZHRoICo9IG1heFNpemUgLyBoZWlnaHQ7XG4gICAgICAgICAgdXBkYXRlZEhlaWdodCA9IG1heFNpemU7XG4gICAgICAgIH1cblxuICAgICAgICBjYW52YXMud2lkdGggPSB1cGRhdGVkV2lkdGg7XG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSB1cGRhdGVkSGVpZ2h0O1xuICAgICAgICBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKT8uZHJhd0ltYWdlKGltYWdlLCAwLCAwLCB1cGRhdGVkV2lkdGgsIHVwZGF0ZWRIZWlnaHQpO1xuICAgICAgICBjb25zdCBkYXRhVXJsOiBzdHJpbmcgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJyk7XG4gICAgICAgIC8vIGNvbnN0IHJlc2l6ZWRJbWFnZSA9IGRhdGFVUkxUb0Jsb2IoZGF0YVVybCk7XG5cbiAgICAgICAgcmVzb2x2ZShkYXRhVXJsKTtcbiAgICAgICAgLy8gJC5ldmVudC50cmlnZ2VyKHtcbiAgICAgICAgLy8gICB0eXBlOiAnaW1hZ2VSZXNpemVkJyxcbiAgICAgICAgLy8gICBibG9iOiByZXNpemVkSW1hZ2UsXG4gICAgICAgIC8vICAgdXJsOiBkYXRhVXJsXG4gICAgICAgIC8vIH0pO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qgb3JpZ2luYWxCYXNlNjQ6IHN0cmluZyA9IHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nO1xuICAgICAgaW1hZ2Uuc3JjID0gb3JpZ2luYWxCYXNlNjQ7XG4gICAgfTtcbiAgICAvLyByZWFkZXIub25sb2FkZW5kID0gKCkgPT4ge1xuICAgIC8vICAgY29uc3QgYmFzZTY0OiBzdHJpbmcgPSByZWFkZXIucmVzdWx0IGFzIHN0cmluZztcbiAgICAvLyAgIHJlc29sdmUoYmFzZTY0KTtcbiAgICAvLyB9O1xuICAgIHJlYWRlci5vbmVycm9yID0gKGV2ZW50OiBQcm9ncmVzc0V2ZW50KSA9PiB7XG4gICAgICByZWplY3QoZXZlbnQpO1xuICAgIH07XG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gIH0pO1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBSU8sTUFBTSxzQkFBc0IsQ0FBQyxNQUFZLFlBQzlDLElBQUksUUFBUSxDQUFDLFNBQVMsV0FBVztBQUMvQixRQUFNLFNBQVMsSUFBSSxXQUFXO0FBQzlCLFNBQU8sU0FBUyxNQUFNO0FBQ3BCLFVBQU0sUUFBUSxJQUFJLE1BQU07QUFDeEIsVUFBTSxTQUFTLE1BQU07QUFFbkIsWUFBTSxTQUE0QixTQUFTLGNBQWMsUUFBUTtBQUNqRSxZQUFNLEVBQUMsUUFBUSxNQUFLLElBQUk7QUFDeEIsVUFBSSxnQkFBd0I7QUFDNUIsVUFBSSxlQUF1QjtBQUUzQixVQUFHLFFBQVEsUUFBUTtBQUNqQixZQUFHLFFBQVEsU0FBUztBQUNsQiwyQkFBaUIsVUFBVTtBQUMzQix5QkFBZTtBQUFBLFFBQ2pCO0FBQUEsTUFDRixXQUFVLFNBQVMsU0FBUztBQUMxQix3QkFBZ0IsVUFBVTtBQUMxQix3QkFBZ0I7QUFBQSxNQUNsQjtBQUVBLGFBQU8sUUFBUTtBQUNmLGFBQU8sU0FBUztBQUNoQixhQUFPLFdBQVcsSUFBSSxHQUFHLFVBQVUsT0FBTyxHQUFHLEdBQUcsY0FBYyxhQUFhO0FBQzNFLFlBQU0sVUFBa0IsT0FBTyxVQUFVLFlBQVk7QUFHckQsY0FBUSxPQUFPO0FBQUEsSUFNakI7QUFFQSxVQUFNLGlCQUF5QixPQUFPO0FBQ3RDLFVBQU0sTUFBTTtBQUFBLEVBQ2Q7QUFLQSxTQUFPLFVBQVUsQ0FBQyxVQUF5QjtBQUN6QyxXQUFPLEtBQUs7QUFBQSxFQUNkO0FBQ0EsU0FBTyxjQUFjLElBQUk7QUFDM0IsQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K