@brojs/kandinsky
Version:
JavaScript library for Kandinsky AI image generation
151 lines (150 loc) • 5.1 kB
TypeScript
/**
* Популярные соотношения сторон для генерации изображений.
* Используется для удобного указания стандартных пропорций изображения.
*
* @example
* // Квадратное изображение
* const params = {
* query: 'кот',
* aspectRatio: AspectRatio.Square_1_1
* };
*
* @example
* // Вертикальное изображение для Instagram
* const params = {
* query: 'портрет',
* aspectRatio: AspectRatio.Vertical_2_3
* };
*
* @example
* // Широкоформатное изображение для видео
* const params = {
* query: 'пейзаж',
* aspectRatio: AspectRatio.Horizontal_16_9
* };
*/
export declare enum AspectRatio {
/**
* Квадратное изображение (1:1)
* Идеально подходит для аватарок, миниатюр и социальных сетей
* @example
* aspectRatio: AspectRatio.Square_1_1 // 1024x1024
*/
Square_1_1 = 1,
/**
* Вертикальное изображение (2:3)
* Стандартное соотношение для портретов и вертикальных фотографий
* @example
* aspectRatio: AspectRatio.Vertical_2_3 // 682x1024
*/
Vertical_2_3 = 0.6666666666666666,
/**
* Горизонтальное изображение (3:2)
* Классическое соотношение для пейзажей и горизонтальных фотографий
* @example
* aspectRatio: AspectRatio.Horizontal_3_2 // 1024x682
*/
Horizontal_3_2 = 1.5,
/**
* Вертикальное изображение (9:16)
* Соотношение для мобильных устройств и сторис
* @example
* aspectRatio: AspectRatio.Vertical_9_16 // 576x1024
*/
Vertical_9_16 = 0.5625,
/**
* Широкоформатное изображение (16:9)
* Стандартное соотношение для видео и широкоформатных дисплеев
* @example
* aspectRatio: AspectRatio.Horizontal_16_9 // 1024x576
*/
Horizontal_16_9 = 1.7777777777777777
}
/**
* Параметры для генерации изображения с помощью Kandinsky API
* @interface GenerateParams
*/
export interface GenerateParams {
/**
* Текстовое описание желаемого изображения
* @example "Пушистый кот в очках"
* @example "Рыжая лиса в городе"
*/
query: string;
/**
* Ширина генерируемого изображения в пикселях
* @default 1024
* @minimum 256
* @maximum 1024
*/
width?: number;
/**
* Высота генерируемого изображения в пикселях
* @default 1024
* @minimum 256
* @maximum 1024
*/
height?: number;
/**
* Соотношение сторон изображения (ширина/высота)
* Можно использовать enum AspectRatio
* @example AspectRatio.Square_1_1
* @example AspectRatio.Horizontal_16_9
*/
aspectRatio?: number;
/**
* Количество изображений для генерации
* @default 1
* @minimum 1
* @maximum 4
*/
numImages?: number;
/**
* Стиль изображения. Доступные стили:
* - 'ANIME' - аниме стиль
* - 'DEFAULT' - стандартный стиль
* - 'KANDINSKY' - стиль Кандинского
* - 'UHD' - ультра-высокое качество
* @default 'DEFAULT'
*/
style?: string;
/**
* Отрицательный промпт - описание элементов, которые нужно исключить из изображения
* @example "яркие цвета, кислотность"
* @example "размытость, шум"
*/
negativePromptDecoder?: string;
/**
* Количество попыток для ожидания генерации
* @default 10
*/
attempts?: number;
/**
* Задержка между попытками в миллисекундах
* @default 2000
*/
delay?: number;
}
export interface GenerationResult {
uuid: string;
status: string;
result?: {
files: string[];
censored: boolean;
};
errorDescription?: string;
}
export declare class KandinskyAPI {
private readonly client;
private readonly apiKey;
private readonly secretKey;
private pipelineId;
constructor({ apiKey, secretKey }?: {
apiKey?: string;
secretKey?: string;
});
private getPipeline;
private calculateDimensions;
generate(params: GenerateParams): Promise<string[]>;
private waitForGeneration;
}