AI bulk image upscaler with Node.js
Image upscaling can be done using Real-ESRGAN, a super-resolution algorithm. Super-resolution is the process of increasing the resolution of the image.
Real-ESRGAN provides Linux, Windows and MacOS executable files and models for Intel/AMD/Nvidia GPUs.
The snippet below demonstrates bulk image upscaling with scale factor 4 and using the realesrgan-x4plus-anime
model.
(async () => {const inputDirectory = path.resolve(path.join(__dirname, 'pictures'));const outputDirectory = path.resolve(path.join(__dirname, 'pictures_upscaled'));const modelsPath = path.resolve(path.join(__dirname, 'resources', 'models'));const execName = 'realesrgan-ncnn-vulkan';const execPath = path.resolve(path.join(__dirname, 'resources', getPlatform(), 'bin', execName));const scaleFactor = 4;const modelName = 'realesrgan-x4plus-anime';if (!fs.existsSync(outputDirectory)) {await fs.promises.mkdir(outputDirectory, { recursive: true });}const commands = ['-i',inputDirectory,'-o',outputDirectory,'-s',scaleFactor,'-m',modelsPath,'-n',modelName];const upscaler = spawn(execPath, commands, {cwd: undefined,detached: false});upscaler.stderr.on('data', (data) => {console.log(data.toString());});await timers.setTimeout(600 * 1000);})();
Demo
The demo with the mentioned example is available here.