UNPKG

@magicfun1241/anime4k

Version:
81 lines (80 loc) 2.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 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' ? 'Anime4KCPP_CLI.exe' : 'Anime4KCPP_CLI'); function convert(input, output, options) { return new Promise((resolve, reject) => { const args = [ "--input", input, "--output", output, "--zoomFactor", options.zoomFactor.toString() ]; if (options.gpuAcceleration) args.push("--GPUMode"); switch (options.mode.type) { case "cnn": args.push("--CNNMode", "--HDN", "--HDNLevel", options.mode.hdn.level == null ? "1" : options.mode.hdn.level.toString()); break; } const child = child_process_1.spawn(executablePath, args, { // stdio: [ "inherit", "inherit", "inherit" ], cwd: directories_1.binaryDirectory }); child.on("exit", () => { resolve(); }); }); } function anime4k(input) { let mode; let gpuAcceleration = false; let zoomFactor = 2; const context = { toBuffer() { return new Promise((resolve, reject) => { const tmp = path.join(directories_1.tempDirectory, nanoid_1.nanoid(12)); convert(input, tmp, { mode: mode, zoomFactor: zoomFactor, gpuAcceleration: gpuAcceleration }).then(() => { resolve(fs.readFileSync(tmp)); }).catch(err => reject(err)); }); }, toFile(path) { return new Promise((resolve, reject) => { convert(input, path, { mode: mode, zoomFactor: zoomFactor, gpuAcceleration: gpuAcceleration }).then(() => { resolve(); }).catch(err => reject(err)); }); }, gpuAcceleration(value) { gpuAcceleration = value; return context; }, cnnMode(value) { mode = value; mode.type = "cnn"; return context; }, zoomFactor(value) { zoomFactor = value; return context; } }; return context; } exports.default = anime4k;