@nlabs/gothamjs
Version:
Platform
37 lines (36 loc) • 4.55 kB
JavaScript
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