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 (
@@ -22,7 +22,7 @@ export function QualityInput({ min={0} max={100} value={compression} - onChange={handleQualityChange} + onChange={handleCompressionChange} />
); diff --git a/renderer/components/settings-tab/index.tsx b/renderer/components/settings-tab/index.tsx index ad74367..76a3c77 100644 --- a/renderer/components/settings-tab/index.tsx +++ b/renderer/components/settings-tab/index.tsx @@ -12,7 +12,7 @@ import { useAtom, useAtomValue } from "jotai"; import { customModelsPathAtom, scaleAtom } from "../../atoms/userSettingsAtom"; import { modelsListAtom } from "../../atoms/modelsListAtom"; import useLog from "../hooks/useLog"; -import { QualityInput } from "./QualityInput"; +import { CompressionInput } from "./CompressionInput"; import ToggleOverwrite from "./ToggleOverwrite"; import { UpscaylCloudModal } from "../UpscaylCloudModal"; import { ResetSettings } from "./ResetSettings"; @@ -126,14 +126,14 @@ function SettingsTab({ ); } - if (!localStorage.getItem("quality")) { - logit("⚙️ Setting quality to 100%"); - localStorage.setItem("quality", JSON.stringify(compression)); + if (!localStorage.getItem("compression")) { + logit("⚙️ Setting compression to 100%"); + localStorage.setItem("compression", JSON.stringify(compression)); } else { - const currentlySavedQuality = localStorage.getItem("quality"); - logit("⚙️ Getting quality from localStorage", compression); - if (currentlySavedQuality) { - setCompression(JSON.parse(currentlySavedQuality)); + const currentlySavedCompression = localStorage.getItem("compression"); + logit("⚙️ Getting compression from localStorage", compression); + if (currentlySavedCompression) { + setCompression(JSON.parse(currentlySavedCompression)); } } }, []); @@ -144,9 +144,9 @@ function SettingsTab({ localStorage.setItem("saveImageAs", format); }; - const handleQualityChange = (e) => { + const handleCompressionChange = (e) => { setCompression(e.target.value); - localStorage.setItem("quality", e.target.value); + localStorage.setItem("compression", e.target.value); }; const handleGpuIdChange = (e) => { @@ -194,9 +194,9 @@ function SettingsTab({ {/* IMAGE SCALE */} -