UNPKG

stable-diffusion-client

Version:
70 lines (69 loc) 2.67 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const utils_js_1 = require("../utils.js"); const StableDiffusionResult_js_1 = __importDefault(require("./StableDiffusionResult.js")); /** * @class ControlNetApi * @classdesc ControlNet API, a translation layer for Mikubill's ControlNet API * @param {StableDiffusionApi} Stable Diffusion parent API */ class ControlNetApi { constructor(sd) { Object.defineProperty(this, "sd", { enumerable: true, configurable: true, writable: true, value: sd }); } /** * Uses the selected ControlNet proprocessor module to predict a detection * on the input image * @param {ControlNetDetectOptions} options * @returns {Promise<StableDiffusionResult>} ApiResult with the detection result * @example * const api = new StableDiffusionApi(); * const image = sharp("image.png"); * * const result = await api.controlnet.detect({ * controlnet_input_images: [image], * controlnet_module: "depth", * controlnet_processor_res: 512, * controlnet_threshold_a: 64, * controlnet_threshold_b: 64, * }); * * result.image.toFile("result.png"); */ async detect(options) { const input_images = await Promise.all(options.controlnet_input_images.map(async (image) => await (0, utils_js_1.toBase64)(image))); const response = await this.sd.post("/controlnet/detect", { controlnet_module: options.controlnet_module ?? "none", controlnet_input_images: input_images, controlnet_processor_res: options.controlnet_processor_res ?? 512, controlnet_threshold_a: options.controlnet_threshold_a ?? 64, controlnet_threshold_b: options.controlnet_threshold_b ?? 64, }); return new StableDiffusionResult_js_1.default(response); } /** * Returns a list of available ControlNet models * @returns {Promise<string[]>} List of available ControlNet models */ async getModels() { const response = await this.sd.get("/controlnet/model_list"); return response.model_list; } /** * Returns a list of available ControlNet modules * @returns {Promise<string[]>} List of available ControlNet modules */ async getModules() { const response = await this.sd.get("/controlnet/module_list"); return response.module_list; } } exports.default = ControlNetApi;