diff --git a/client/media/imageInputFileToBase64.js b/client/media/imageInputFileToBase64.js index efba0aa..9ecf137 100644 --- a/client/media/imageInputFileToBase64.js +++ b/client/media/imageInputFileToBase64.js @@ -27,76 +27,87 @@ export default async function imageInputFileToBase64({ imageInputFile, maxWidth, * * @description make a request to datasquirel.com */ - console.log(typeof imageInputFile); + try { + console.log(typeof imageInputFile); - let imageName = imageInputFile.name.replace(/\..*/, ""); - let imageDataBase64; - let imageSize; - let canvas = document.createElement("canvas"); + let imageName = imageInputFile.name.replace(/\..*/, ""); + let imageDataBase64; + let imageSize; + let canvas = document.createElement("canvas"); - const MIME_TYPE = imageInputFile.type; - const QUALITY = 0.95; - const MAX_WIDTH = maxWidth ? maxWidth : null; + const MIME_TYPE = imageInputFile.type; + const QUALITY = 0.95; + const MAX_WIDTH = maxWidth ? maxWidth : null; - const file = imageInputFile; // get the file - const blobURL = URL.createObjectURL(file); - const img = new Image(); + const file = imageInputFile; // get the file + const blobURL = URL.createObjectURL(file); + const img = new Image(); - /** ********************* Add source to new image */ - img.src = blobURL; + /** ********************* Add source to new image */ + img.src = blobURL; - imageDataBase64 = await new Promise((res, rej) => { - /** ********************* Handle Errors in loading image */ - img.onerror = function () { - URL.revokeObjectURL(this.src); - console.log("Cannot load image"); + imageDataBase64 = await new Promise((res, rej) => { + /** ********************* Handle Errors in loading image */ + img.onerror = function () { + URL.revokeObjectURL(this.src); + console.log("Cannot load image"); + }; + + /** ********************* Handle new image when loaded */ + img.onload = function () { + URL.revokeObjectURL(this.src); + + if (MAX_WIDTH) { + const scaleSize = MAX_WIDTH / img.naturalWidth; + + canvas.width = img.naturalWidth < MAX_WIDTH ? img.naturalWidth : MAX_WIDTH; + canvas.height = img.naturalWidth < MAX_WIDTH ? img.naturalHeight : img.naturalHeight * scaleSize; + } else { + canvas.width = img.naturalWidth; + canvas.height = img.naturalHeight; + } + + const ctx = canvas.getContext("2d"); + ctx.drawImage(img, 0, 0, canvas.width, canvas.height); + + const srcEncoded = canvas.toDataURL(MIME_TYPE, QUALITY); + + if (imagePreviewNode) { + document.querySelectorAll(`[data-imagepreview='image']`).forEach((img) => { + img.src = srcEncoded; + }); + } + + res(srcEncoded); + }; + }); + + imageSize = await new Promise((res, rej) => { + canvas.toBlob( + (blob) => { + res(blob.size); + }, + MIME_TYPE, + QUALITY + ); + }); + + return { + imageBase64: imageDataBase64.replace(/.*?base64,/, ""), + imageBase64Full: imageDataBase64, + imageName: imageName, + imageSize: imageSize, }; + } catch (error) { + console.log("Image Processing Error! =>", error.message); - /** ********************* Handle new image when loaded */ - img.onload = function () { - URL.revokeObjectURL(this.src); - - if (MAX_WIDTH) { - const scaleSize = MAX_WIDTH / img.naturalWidth; - - canvas.width = img.naturalWidth < MAX_WIDTH ? img.naturalWidth : MAX_WIDTH; - canvas.height = img.naturalWidth < MAX_WIDTH ? img.naturalHeight : img.naturalHeight * scaleSize; - } else { - canvas.width = img.naturalWidth; - canvas.height = img.naturalHeight; - } - - const ctx = canvas.getContext("2d"); - ctx.drawImage(img, 0, 0, canvas.width, canvas.height); - - const srcEncoded = canvas.toDataURL(MIME_TYPE, QUALITY); - - if (imagePreviewNode) { - document.querySelectorAll(`[data-imagepreview='image']`).forEach((img) => { - img.src = srcEncoded; - }); - } - - res(srcEncoded); + return { + imageBase64: null, + imageBase64Full: null, + imageName: null, + imageSize: null, }; - }); - - imageSize = await new Promise((res, rej) => { - canvas.toBlob( - (blob) => { - res(blob.size); - }, - MIME_TYPE, - QUALITY - ); - }); - - return { - imageBase64: imageDataBase64.replace(/.*?base64,/, ""), - imageBase64Full: imageDataBase64, - imageName: imageName, - imageSize: imageSize, - }; + } } /** ********************************************** */ diff --git a/client/media/imageInputToBase64.js b/client/media/imageInputToBase64.js index df59a2f..9e616e9 100644 --- a/client/media/imageInputToBase64.js +++ b/client/media/imageInputToBase64.js @@ -26,64 +26,74 @@ export default async function imageInputToBase64({ imageInput, maxWidth, mimeTyp * * @description make a request to datasquirel.com */ - let imagePreviewNode = document.querySelector(`[data-imagepreview='image']`); - let imageName = imageInput.files[0].name.replace(/\..*/, ""); - let imageDataBase64; + try { + let imagePreviewNode = document.querySelector(`[data-imagepreview='image']`); + let imageName = imageInput.files[0].name.replace(/\..*/, ""); + let imageDataBase64; - const MIME_TYPE = mimeType ? mimeType : "image/jpeg"; - const QUALITY = 0.95; - const MAX_WIDTH = maxWidth ? maxWidth : null; + const MIME_TYPE = mimeType ? mimeType : "image/jpeg"; + const QUALITY = 0.95; + const MAX_WIDTH = maxWidth ? maxWidth : null; - const file = imageInput.files[0]; // get the file - const blobURL = URL.createObjectURL(file); - const img = new Image(); + const file = imageInput.files[0]; // get the file + const blobURL = URL.createObjectURL(file); + const img = new Image(); - /** ********************* Add source to new image */ - img.src = blobURL; + /** ********************* Add source to new image */ + img.src = blobURL; - imageDataBase64 = await new Promise((res, rej) => { - /** ********************* Handle Errors in loading image */ - img.onerror = function () { - URL.revokeObjectURL(this.src); - window.alert("Cannot load image!"); + imageDataBase64 = await new Promise((res, rej) => { + /** ********************* Handle Errors in loading image */ + img.onerror = function () { + URL.revokeObjectURL(this.src); + window.alert("Cannot load image!"); + }; + + /** ********************* Handle new image when loaded */ + img.onload = function () { + URL.revokeObjectURL(this.src); + + const canvas = document.createElement("canvas"); + + if (MAX_WIDTH) { + const scaleSize = MAX_WIDTH / img.naturalWidth; + + canvas.width = img.naturalWidth < MAX_WIDTH ? img.naturalWidth : MAX_WIDTH; + canvas.height = img.naturalWidth < MAX_WIDTH ? img.naturalHeight : img.naturalHeight * scaleSize; + } else { + canvas.width = img.naturalWidth; + canvas.height = img.naturalHeight; + } + + const ctx = canvas.getContext("2d"); + ctx.drawImage(img, 0, 0, canvas.width, canvas.height); + + const srcEncoded = canvas.toDataURL(MIME_TYPE, QUALITY); + + if (imagePreviewNode) { + document.querySelectorAll(`[data-imagepreview='image']`).forEach((img) => { + img.src = srcEncoded; + }); + } + + res(srcEncoded); + }; + }); + + return { + imageBase64: imageDataBase64.replace(/.*?base64,/, ""), + imageBase64Full: imageDataBase64, + imageName: imageName, }; + } catch (error) { + console.log("Image Processing Error! =>", error.message); - /** ********************* Handle new image when loaded */ - img.onload = function () { - URL.revokeObjectURL(this.src); - - const canvas = document.createElement("canvas"); - - if (MAX_WIDTH) { - const scaleSize = MAX_WIDTH / img.naturalWidth; - - canvas.width = img.naturalWidth < MAX_WIDTH ? img.naturalWidth : MAX_WIDTH; - canvas.height = img.naturalWidth < MAX_WIDTH ? img.naturalHeight : img.naturalHeight * scaleSize; - } else { - canvas.width = img.naturalWidth; - canvas.height = img.naturalHeight; - } - - const ctx = canvas.getContext("2d"); - ctx.drawImage(img, 0, 0, canvas.width, canvas.height); - - const srcEncoded = canvas.toDataURL(MIME_TYPE, QUALITY); - - if (imagePreviewNode) { - document.querySelectorAll(`[data-imagepreview='image']`).forEach((img) => { - img.src = srcEncoded; - }); - } - - res(srcEncoded); + return { + imageBase64: null, + imageBase64Full: null, + imageName: null, }; - }); - - return { - imageBase64: imageDataBase64.replace(/.*?base64,/, ""), - imageBase64Full: imageDataBase64, - imageName: imageName, - }; + } } /** ********************************************** */ diff --git a/package.json b/package.json index 4dcc8b0..d8db215 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "datasquirel", - "version": "1.1.30", + "version": "1.1.31", "description": "Cloud-based SQL data management tool", "main": "index.js", "scripts": {