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
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",