From b620c568b65bb027cdec0105afb3f04fbdcd9581 Mon Sep 17 00:00:00 2001 From: Nayam Amarshe <25067102+NayamAmarshe@users.noreply.github.com> Date: Sat, 16 Sep 2023 16:04:35 +0530 Subject: [PATCH] Fix sharp pixel limit and compression and macos quit --- electron/index.ts | 4 +--- electron/main-window.ts | 16 +++++-------- electron/utils/convert-and-scale.ts | 16 +++++++++---- ...{QualityInput.tsx => CompressionInput.tsx} | 12 +++++----- renderer/components/settings-tab/index.tsx | 24 +++++++++---------- tailwind.config.js | 2 +- 6 files changed, 37 insertions(+), 37 deletions(-) rename renderer/components/settings-tab/{QualityInput.tsx => CompressionInput.tsx} (72%) diff --git a/electron/index.ts b/electron/index.ts index 1ed9a20..bd8a0d2 100644 --- a/electron/index.ts +++ b/electron/index.ts @@ -46,9 +46,7 @@ app.on("ready", async () => { // Quit the app once all windows are closed app.on("window-all-closed", () => { - if (process.platform !== "darwin") { - app.quit(); - } + app.quit(); }); ipcMain.on(COMMAND.STOP, stop); diff --git a/electron/main-window.ts b/electron/main-window.ts index 3bdadbb..a52acc0 100644 --- a/electron/main-window.ts +++ b/electron/main-window.ts @@ -98,19 +98,15 @@ const createMainWindow = () => { setSaveOutputFolder(lastSaveOutputFolder); } }); - // GET IMAGE QUALITY (NUMBER) TO LOCAL STORAGE + // GET IMAGE COMPRESSION (NUMBER) FROM LOCAL STORAGE mainWindow.webContents - .executeJavaScript('localStorage.getItem("quality");', true) - .then((lastSavedQuality: string | null) => { - if (lastSavedQuality !== null) { - if (parseInt(lastSavedQuality) === 100) { - setCompression(99); - } else { - setCompression(parseInt(lastSavedQuality)); - } + .executeJavaScript('localStorage.getItem("compression");', true) + .then((lastSavedCompression: string | null) => { + if (lastSavedCompression !== null) { + setCompression(parseInt(lastSavedCompression)); } }); - // GET IMAGE QUALITY (NUMBER) TO LOCAL STORAGE + // GET OVERWRITE (BOOLEAN) FROM LOCAL STORAGE mainWindow.webContents .executeJavaScript('localStorage.getItem("overwrite");', true) .then((lastSavedOverwrite: string | null) => { diff --git a/electron/utils/convert-and-scale.ts b/electron/utils/convert-and-scale.ts index 84b051d..dd933c9 100644 --- a/electron/utils/convert-and-scale.ts +++ b/electron/utils/convert-and-scale.ts @@ -18,23 +18,29 @@ const convertAndScale = async ( throw new Error("Could not grab the original image!"); } // Resize the image to the scale - const newImage = sharp(upscaledImagePath) + const newImage = sharp(upscaledImagePath, { + limitInputPixels: false, + }) .resize( originalImage.width && originalImage.width * parseInt(scale), originalImage.height && originalImage.height * parseInt(scale) ) .withMetadata(); // Keep metadata + // Convert compression percentage (0-100) to compressionLevel (0-9) + const compressionLevel = Math.round((compression / 100) * 9); // Change the output according to the saveImageAs if (saveImageAs === "png") { - newImage.png({ quality: 100 - compression }); + newImage.png({ compressionLevel }); } else if (saveImageAs === "jpg") { - console.log("Quality: ", compression); - newImage.jpeg({ quality: 100 - compression }); + console.log("compression: ", compression); + newImage.jpeg({ quality: compression }); } // Save the image const buffer = await newImage.toBuffer(); try { - await sharp(buffer).toFile(processedImagePath); + await sharp(buffer, { + limitInputPixels: false, + }).toFile(processedImagePath); } catch (error) { logit("❌ Error converting to: ", saveImageAs, error); onError(error); diff --git a/renderer/components/settings-tab/QualityInput.tsx b/renderer/components/settings-tab/CompressionInput.tsx similarity index 72% rename from renderer/components/settings-tab/QualityInput.tsx rename to renderer/components/settings-tab/CompressionInput.tsx index 551fe42..3180ebb 100644 --- a/renderer/components/settings-tab/QualityInput.tsx +++ b/renderer/components/settings-tab/CompressionInput.tsx @@ -1,12 +1,12 @@ -type QualityInputProps = { +type CompressionInputProps = { compression: number; - handleQualityChange: (arg: any) => void; + handleCompressionChange: (arg: any) => void; }; -export function QualityInput({ +export function CompressionInput({ compression, - handleQualityChange, -}: QualityInputProps) { + handleCompressionChange, +}: CompressionInputProps) { return (