Skip to content

gqgs/upscalejs

Repository files navigation

upscalejs

Image upscaling using super resolution AI models.

Usage

import { Upscaler } from "upscalejs"

const upscaler = new Upscaler()
const result = await upscaler.upscale(bitmap)
const canvas = document.createElement("canvas")
canvas.width = result.width
canvas.height = result.height
canvas.getContext("2d")?.putImageData(result, 0, 0)

Node

const fs = require("fs")
const { Upscaler, canvas } = require("upscalejs")

const upscaler = new Upscaler({
  base: "./node_modules/upscalejs/dist/"
})

const upscale = async (input, output) => {
  const img = await canvas.loadImage(input)
  const result = await upscaler.upscale(img)
  const write_stream = fs.createWriteStream(output)
  const upscale_canvas = canvas.createCanvas(result.width, result.height)
  upscale_canvas.getContext("2d").putImageData(result, 0, 0)
  const jpeg_stream = upscale_canvas.createJPEGStream()
  jpeg_stream.pipe(write_stream)
}

upscale("image.jpg", "upscaled.jpg")

You will need to copy the models and onnxruntime wasm files to your public folder e.g.:

const CopyPlugin = require("copy-webpack-plugin");

module.exports = {
  chainWebpack: config => {
    config
      .plugin("copy-webpack-plugin")
      .use(CopyPlugin)
      .tap(() => {
        return [{
          patterns: [
            {
              from: "./node_modules/upscalejs/dist/js/ort-*.wasm",
              to: "js/[name][ext]",
            },
            {
              from: "./node_modules/upscalejs/dist/models/*.onnx",
              to: "models/[name][ext]",
            }
          ],
        }]
      })
   }
}

Current available models were trained in anime images and are based on work done in the Real-CUGAN project.

Project Setup

npm install

Compile and Hot-Reload for Development

npm run dev

Type-Check, Compile and Minify for Production

npm run build

Lint with ESLint

npm run lint

Test with Vitest

npm run test

About

JavaScript image upscaling using super resolution AI models

Topics

Resources

Stars

Watchers

Forks

Contributors