@magicfun1241/waifu2x
Version:
88 lines (87 loc) • 2.83 kB
JavaScript
;
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;