koishi-plugin-hhs-huatu
Version:
Generate images by diffusion models
60 lines (59 loc) • 2.05 kB
TypeScript
/**
* 将数值向下或向上对齐到 64 的倍数
* @param value 原始数值
* @param direction 对齐方向:'floor' 向下,'ceil' 向上
*/
export declare function alignTo64Grid(value: number, direction: 'floor' | 'ceil'): number;
/**
* Buffer 转 Base64 字符串(不含 data URL 前缀)
*/
export declare function bufferToBase64(buffer: Buffer): string;
/**
* 将图片尺寸调整为 64 的倍数
* @param buffer 图片 ArrayBuffer
* @returns 调整后的图片 Buffer 和尺寸
*/
export declare function resizeToMultipleOf64(buffer: ArrayBuffer): Promise<{
buffer: Buffer;
width: number;
height: number;
}>;
/**
* 将图片亮度降低(变暗),方便用户在上面涂白
* @param buffer 原图 ArrayBuffer
* @param brightness 亮度系数,默认 0.4(即降低到 40%)
* @returns 变暗后的图片 Buffer
*/
export declare function darkenImage(buffer: ArrayBuffer, brightness?: number): Promise<Buffer>;
/**
* 从用户涂抹的图片中生成 Inpainting 蒙版
*
* 处理流程:
* 1. 灰度化 -> 阈值提取白色区域 -> 模糊 -> 再次阈值化
* 这个流程可以平滑蒙版边缘,避免 AI 重绘时产生明显边界
* 2. 计算白色区域的包围盒
* 3. 将包围盒扩展至 64 的倍数对齐
* 4. 生成最终蒙版
*
* @param buffer 用户发回的涂抹图片 ArrayBuffer
* @returns 蒙版 Buffer、宽度、高度
*/
export declare function createInpaintMask(buffer: ArrayBuffer): Promise<{
maskBuffer: Buffer;
width: number;
height: number;
}>;
/**
* 创建精确的 Inpainting 蒙版(保留原始涂抹形状)
*
* 与 createInpaintMask 不同,此函数保留用户涂抹的精确形状,
* 而不是扩展为矩形。适用于需要精确控制重绘区域的场景。
*
* @param buffer 用户发回的涂抹图片 ArrayBuffer
* @returns 蒙版 Buffer、宽度、高度
*/
export declare function createPreciseInpaintMask(buffer: ArrayBuffer): Promise<{
maskBuffer: Buffer;
width: number;
height: number;
}>;