From 83515811a2e3299c9296e4d4a8bde42070815230 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=AE=D1=80=D0=B8=D0=B9=20=D0=A5=D0=BE=D1=80=D1=83=D0=B6?= =?UTF-8?q?=D0=B8=D0=B9?= Date: Fri, 13 Jan 2023 16:37:29 +0300 Subject: [PATCH 1/2] feat: add loader image, edit upscayl script --- README.md | 2 +- assets/logo.png | Bin 0 -> 3723 bytes assets/logo.svg | 11 --- build/icon.png | Bin 0 -> 13781 bytes main/background.js | 6 +- main/helpers/upscayl.js | 22 +++-- package.json | 104 ++++++++++++---------- src/components/Image/Image.module.css | 22 +++++ src/components/Image/index.js | 29 ++++++ src/components/Spinner/Spinner.module.css | 18 ++++ src/components/Spinner/index.js | 6 ++ src/components/index.js | 2 + src/pages/superResolution.js | 47 ++++------ 13 files changed, 168 insertions(+), 101 deletions(-) create mode 100644 assets/logo.png delete mode 100644 assets/logo.svg create mode 100644 build/icon.png create mode 100644 src/components/Image/Image.module.css create mode 100644 src/components/Image/index.js create mode 100644 src/components/Spinner/Spinner.module.css create mode 100644 src/components/Spinner/index.js diff --git a/README.md b/README.md index 2f36d13..5b3594b 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- Super resolution logo + Super resolution logo

Super resolution

diff --git a/assets/logo.png b/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..74da609c2ff207f4bbde5b4f5ba4f9622b777c41 GIT binary patch literal 3723 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 literal 0 HcmV?d00001 diff --git a/assets/logo.svg b/assets/logo.svg deleted file mode 100644 index 1608322..0000000 --- a/assets/logo.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/build/icon.png b/build/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8fa5457911c14eafaaa6e1c72c8f4b8977e402f5 GIT binary patch literal 13781 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 literal 0 HcmV?d00001 diff --git a/main/background.js b/main/background.js index b143d84..9a4fc8a 100644 --- a/main/background.js +++ b/main/background.js @@ -77,7 +77,7 @@ app.on('ready', async () => { preload: path.join(__dirname, 'preload.js'), }, }); - // mainWindow.webContents.openDevTools(); + mainWindow.webContents.openDevTools(); mainWindow.removeMenu(); mainWindow.once('ready-to-show', () => { setTimeout(() => { @@ -95,10 +95,10 @@ app.on('ready', async () => { ipcMain.on('upscayl', async () => { const index = 0; - if (!flag && files.length > 0 && saveDirectory.length > 0) { + if (!flag && files.length > 0) { flag = true; for (const file of files) { - await upscayl(file, saveDirectory[0], mainWindow, index); + await upscayl(file, null, mainWindow, index); index++; } flag = false; diff --git a/main/helpers/upscayl.js b/main/helpers/upscayl.js index f1db96e..b4ac9ab 100644 --- a/main/helpers/upscayl.js +++ b/main/helpers/upscayl.js @@ -3,17 +3,25 @@ const fs = require('fs'); const path = require('path'); const { modelsPath, execPath } = require('./binaries'); -const upscayl = (inputDir, outputDir, mainWindow, index) => { +const upscayl = (inputDir, outputDir = null, mainWindow, index) => { mainWindow.setProgressBar(0.01); + mainWindow.webContents.send('upscayl-progress', 1); let failed = false; let outFile = ''; let stats = fs.statSync(inputDir); + let outputDirectory = ''; + if (outputDir) { + outputDirectory = outputDir; + } else { + outputDirectory = path.dirname(inputDir); + } + console.log(outputDirectory); if (stats.isDirectory()) { - outFile = outputDir; + outFile = outputDirectory; } else { const fileName = path.parse(inputDir).name; const fileExt = path.parse(inputDir).ext; - outFile = `${outputDir}/${fileName}_upscayl${fileExt}`; + outFile = `${outputDirectory}/${fileName}_upscayl${fileExt}`; } const upscayl = spawn( execPath('realesrgan'), @@ -28,18 +36,18 @@ const upscayl = (inputDir, outputDir, mainWindow, index) => { const percentString = data.match(/\d+,\d+%/) || []; if (percentString.length) { let percent = parseFloat(percentString[0].slice(0, -1)) / 100; - mainWindow.setProgressBar(percent); - mainWindow.webContents.send('upscayl-progress', percent * 100); + if (percent > 0.01) { + mainWindow.setProgressBar(percent); + mainWindow.webContents.send('upscayl-progress', percent * 100); + } } if (data.includes('invalid gpu') || data.includes('failed')) { - mainWindow.setProgressBar(-1); failed = true; } }); upscayl.on('error', (data) => { data.toString(); - mainWindow.setProgressBar(-1); console.log('error'); failed = true; return; diff --git a/package.json b/package.json index c7c6795..9e9f03b 100644 --- a/package.json +++ b/package.json @@ -1,50 +1,58 @@ { - "private": true, - "name": "super-resolution", - "description": "Free and open source AI image upscaler. It uses the latest AI technology to upscale images to higher resolutions.", - "version": "1.2.0", - "author": "Urij Horuzij", - "homepage": "https://github.com/UrijHoruzij/super-resolution", - "license": "MIT", - "main": "main/background.js", - "scripts": { - "dev": "next dev", - "electron": "electron .", - "build": "next build && next export", - "dist": "npm run build && electron-builder ", - "dist:deb": "electron-builder build -l deb", - "dist:rpm": "electron-builder build -l rpm", - "dist:dmg": "electron-builder build -m dmg", - "dist:pkg": "electron-builder build -m pkg", - "dist:msi": "electron-builder build -w nsis", - "publish-linux-app": "electron-builder -l --publish always", - "publish-win-app": "electron-builder -w --publish always", - "publish-mac-app": "electron-builder -m --publish always", - "postinstall": "electron-builder install-app-deps", - "prepare": "husky install" - }, - "dependencies": { - "classnames": "^2.3.2", - "electron-is-dev": "^2.0.0", - "electron-reload": "^2.0.0-alpha.1", - "electron-serve": "^1.1.0", - "electron-settings": "^4.0.2", - "electron-store": "^8.1.0", - "electron-updater": "^5.2.1", - "ui-forest": "^1.11.4" - }, - "devDependencies": { - "@commitlint/cli": "^17.0.0", - "@commitlint/config-conventional": "^17.0.0", - "@semantic-release/changelog": "^6.0.2", - "@semantic-release/git": "^10.0.1", - "@semantic-release/npm": "^9.0.1", - "electron": "^20.1.0", - "electron-builder": "^23.3.3", - "husky": "^8.0.1", - "next": "^13.1.1", - "next-transpile-modules": "^10.0.0", - "react": "^18.2.0", - "react-dom": "^18.2.0" - } + "private": true, + "name": "super-resolution", + "description": "Free and open source AI image upscaler. It uses the latest AI technology to upscale images to higher resolutions.", + "version": "1.2.0", + "author": "Urij Horuzij", + "homepage": "https://github.com/UrijHoruzij/super-resolution", + "license": "MIT", + "main": "main/background.js", + "scripts": { + "dev": "next dev", + "electron": "electron .", + "build": "next build && next export", + "dist": "npm run build && electron-builder ", + "dist:deb": "electron-builder build -l deb", + "dist:rpm": "electron-builder build -l rpm", + "dist:dmg": "electron-builder build -m dmg", + "dist:pkg": "electron-builder build -m pkg", + "dist:msi": "electron-builder build -w nsis", + "publish-linux-app": "electron-builder -l --publish always", + "publish-win-app": "electron-builder -w --publish always", + "publish-mac-app": "electron-builder -m --publish always", + "postinstall": "electron-builder install-app-deps", + "prepare": "husky install" + }, + "dependencies": { + "classnames": "^2.3.2", + "electron-is-dev": "^2.0.0", + "electron-reload": "^2.0.0-alpha.1", + "electron-serve": "^1.1.0", + "electron-settings": "^4.0.2", + "electron-store": "^8.1.0", + "electron-updater": "^5.2.1", + "ui-forest": "^1.11.4" + }, + "devDependencies": { + "@commitlint/cli": "^17.0.0", + "@commitlint/config-conventional": "^17.0.0", + "@semantic-release/changelog": "^6.0.2", + "@semantic-release/git": "^10.0.1", + "@semantic-release/npm": "^9.0.1", + "electron": "^20.1.0", + "electron-builder": "^23.3.3", + "husky": "^8.0.1", + "next": "^13.1.1", + "next-transpile-modules": "^10.0.0", + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/UrijHoruzij/super-resolution.git" + }, + "keywords": [], + "bugs": { + "url": "https://github.com/UrijHoruzij/super-resolution/issues" + } } diff --git a/src/components/Image/Image.module.css b/src/components/Image/Image.module.css new file mode 100644 index 0000000..6103664 --- /dev/null +++ b/src/components/Image/Image.module.css @@ -0,0 +1,22 @@ +.wrapper { + position: relative; + width: fit-content; +} +.loader { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} +.blur { + filter: blur(8px); +} +.percent { + margin-top: 12px; + font-size: 16px; + color: var(--white); +} diff --git a/src/components/Image/index.js b/src/components/Image/index.js new file mode 100644 index 0000000..0849306 --- /dev/null +++ b/src/components/Image/index.js @@ -0,0 +1,29 @@ +import { SliderBeforeAfter } from 'ui-forest'; +import classnames from 'classnames'; +import { Spinner } from '../'; +import styles from './Image.module.css'; + +const Image = (props) => { + const { after, before, progress, percent } = props; + return ( +

+
+ {after ? ( + + ) : ( + + )} +
+ {progress && ( +
+ +
{percent.toFixed(0)}%
+
+ )} +
+ ); +}; +export default Image; diff --git a/src/components/Spinner/Spinner.module.css b/src/components/Spinner/Spinner.module.css new file mode 100644 index 0000000..3e6446a --- /dev/null +++ b/src/components/Spinner/Spinner.module.css @@ -0,0 +1,18 @@ +.spinner { + display: block; + height: 50px; + width: 50px; + border: 4px rgba(255, 255, 255, 0.15) solid; + border-top: 4px white solid; + border-radius: 50%; + animation: spin 1s infinite linear; +} + +@keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(359deg); + } +} diff --git a/src/components/Spinner/index.js b/src/components/Spinner/index.js new file mode 100644 index 0000000..6619fd6 --- /dev/null +++ b/src/components/Spinner/index.js @@ -0,0 +1,6 @@ +import styles from './Spinner.module.css'; + +const Spinner = () => { + return
; +}; +export default Spinner; diff --git a/src/components/index.js b/src/components/index.js index ffb52ba..d97f470 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -4,5 +4,7 @@ export { default as Header } from './Header'; export { default as Sidebar } from './Sidebar'; export { default as Main } from './Main'; export { default as Splash } from './Splash'; +export { default as Spinner } from './Spinner'; +export { default as Image } from './Image'; export { default as LangContext } from './Context'; diff --git a/src/pages/superResolution.js b/src/pages/superResolution.js index ca2cc6c..550d3f9 100644 --- a/src/pages/superResolution.js +++ b/src/pages/superResolution.js @@ -1,14 +1,15 @@ import { useEffect, useState, useContext } from 'react'; import Head from 'next/head'; -import { Button, SliderBeforeAfter } from 'ui-forest'; -import { Header, Sidebar, Main, LangContext } from '../components'; +import { Button } from 'ui-forest'; +import { Header, Sidebar, Main, LangContext, Image } from '../components'; const superResolutionPage = () => { const [messages] = useContext(LangContext); const [images, setImages] = useState([]); - const [progress, setProgress] = useState(0); + const [percent, setPercent] = useState(0); + const [progress, setProgress] = useState(false); const superResolution = () => { - setProgress(1); + setProgress(true); window.electron.send('upscayl'); }; const openFile = () => { @@ -41,47 +42,31 @@ const superResolutionPage = () => { }; }), ); - setProgress(0); + setPercent(0); + setProgress(false); }); window.electron.on('upscayl-error', (event) => {}); window.electron.on('upscayl-progress', (event, percent) => { - setProgress(percent); + setPercent(percent); }); }); - const progressRender = () => { - if (progress > 0) { - return { filter: 'blur(8px)' }; - } else { - return {}; - } - }; return ( <>
-
- {images - ? images.map((image, index) => { - if (image.after) { - return ( - - ); - } else { - return ; - } - }) - : null} -
+ {images + ? images.map((image, index) => { + return ( + + ); + }) + : null} - + {/* */}
From becbeb84103d906f1b4a44c309dddb936889e20e Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Fri, 13 Jan 2023 13:42:59 +0000 Subject: [PATCH 2/2] chore(release): set `package.json` to 1.4.0 [skip ci] # [1.4.0](https://github.com/UrijHoruzij/super-resolution/compare/v1.3.0...v1.4.0) (2023-01-13) ### Bug Fixes * merge package.json ([83367ab](https://github.com/UrijHoruzij/super-resolution/commit/83367ab1af6135dc2db23eef041d65c92ec38af4)) ### Features * add loader image, edit upscayl script ([8351581](https://github.com/UrijHoruzij/super-resolution/commit/83515811a2e3299c9296e4d4a8bde42070815230)) --- CHANGELOG.md | 12 ++++++++++++ package.json | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 807a72f..e5e9e85 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# [1.4.0](https://github.com/UrijHoruzij/super-resolution/compare/v1.3.0...v1.4.0) (2023-01-13) + + +### Bug Fixes + +* merge package.json ([83367ab](https://github.com/UrijHoruzij/super-resolution/commit/83367ab1af6135dc2db23eef041d65c92ec38af4)) + + +### Features + +* add loader image, edit upscayl script ([8351581](https://github.com/UrijHoruzij/super-resolution/commit/83515811a2e3299c9296e4d4a8bde42070815230)) + # [1.3.0](https://github.com/UrijHoruzij/super-resolution/compare/v1.2.0...v1.3.0) (2023-01-12) diff --git a/package.json b/package.json index 99e6567..17b3096 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "private": true, "name": "super-resolution", "description": "Free and open source AI image upscaler. It uses the latest AI technology to upscale images to higher resolutions.", - "version": "1.3.0", + "version": "1.4.0", "author": "Urij Horuzij", "homepage": "https://github.com/UrijHoruzij/super-resolution", "license": "MIT",