import { useState, useEffect, useRef, useCallback } from "react"; import commands from "../../main/commands"; import { ReactCompareSlider, ReactCompareSliderImage, } from "react-compare-slider"; import Animated from "../public/loading.svg"; import Image from "next/image"; const Home = () => { const [imagePath, SetImagePath] = useState(""); const [upscaledImagePath, setUpscaledImagePath] = useState(""); const [outputPath, SetOutputPath] = useState(""); const [scaleFactor, setScaleFactor] = useState(4); const [progress, setProgress] = useState(""); const [model, setModel] = useState("realesrgan-x4plus"); const [loaded, setLoaded] = useState(false); const [version, setVersion] = useState(""); useEffect(() => { setVersion(navigator.userAgent.match(/Upscayl\/([\d\.]+\d+)/)[1]); }, []); useEffect(() => { setLoaded(true); window.electron.on(commands.UPSCAYL_PROGRESS, (_, data) => { if (data.includes("invalid gpu")){ alert("Error!!! Please make sure your GPU supports vulkan") } else if (data.length > 0 && data.length < 10) setProgress(data); }); window.electron.on(commands.UPSCAYL_DONE, (_, data) => { setUpscaledImagePath(data); }); }, []); const selectImageHandler = async () => { SetImagePath(""); setUpscaledImagePath(""); setProgress(""); var path = await window.electron.invoke(commands.SELECT_FILE); if (path !== "cancelled") { SetImagePath(path); var dirname = path.match(/(.*)[\/\\]/)[1] || ""; SetOutputPath(dirname); } }; const handleModelChange = (e) => { setModel(e.target.value); }; const outputHandler = async () => { var path = await window.electron.invoke(commands.SELECT_FOLDER); if (path !== "cancelled") { SetOutputPath(path); } else { console.log("Getting output path from input file"); } }; const upscaylHandler = async () => { if (imagePath !== "") { setUpscaledImagePath(""); setProgress("Hold on..."); await window.electron.send(commands.UPSCAYL, { scaleFactor, imagePath, outputPath, model, }); } else { alert("Please select an image!!!") } }; return (
AI Image Upscaler
{/* LEFT PANE */}Step 1
Step 2
Select Upscaling Type
Step 3
Select Scale Factor
Step 3
Defaults to Image's path
Step 5
Copyright © 2022 -{" "} Upscayl
Made by{" "} TGS963 {" "} and{" "} Nayam Amarshe
{progress}
Select an Image to Upscale
Upscale v{version}
> ) : upscaledImagePath.length === 0 ? (