UNPKG

@magicfun1241/waifu2x

Version:
88 lines (87 loc) 2.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Mode = void 0; const os = require("os"); const fs = require("fs"); const path = require("path"); const nanoid_1 = require("nanoid"); const child_process_1 = require("child_process"); const directories_1 = require("./directories"); const executablePath = path.join(__dirname, "../bin", os.platform() === 'win32' ? 'waifu2x-converter-cpp.exe' : 'waifu2x-converter-cpp'); var Mode; (function (Mode) { Mode["Noise"] = "noise"; Mode["Scale"] = "scale"; Mode["NoiseScale"] = "noise-scale"; })(Mode = exports.Mode || (exports.Mode = {})); function convert(input, output, options) { return new Promise((resolve, reject) => { const args = [ "-i", input, "-o", output ]; switch (options.mode) { case Mode.Noise: args.push("--noise-level", options.noise.toString()); break; case Mode.Scale: args.push("--scale-ratio", options.scale.toString()); break; case Mode.NoiseScale: args.push("--noise-level", options.noise.toString(), "--scale-ratio", options.scale.toString()); break; } const child = child_process_1.spawn(executablePath, args, { cwd: directories_1.binaryDirectory }); child.on("exit", () => { resolve(); }); }); } function waifu2x(input) { let mode = Mode.NoiseScale; let scale = 2; let noise = 1; const context = { toBuffer() { return new Promise((resolve, reject) => { const tmp = path.join(directories_1.tempDirectory, nanoid_1.nanoid(12)); convert(input, tmp, { mode: mode, noise: noise, scale: scale }).then(() => { resolve(fs.readFileSync(tmp)); }).catch(err => reject(err)); }); }, toFile(path) { return new Promise((resolve, reject) => { convert(input, path, { mode: mode, noise: noise, scale: scale }).then(() => { resolve(); }).catch(err => reject(err)); }); }, scale: value => { scale = value; return context; }, noise: (value) => { noise = value; return context; }, mode: value => { mode = value; return context; } }; return context; } exports.default = waifu2x;