From 1b35cb6a44e4eb2ad485266a871cfc1744240f58 Mon Sep 17 00:00:00 2001 From: Leonid Pershin Date: Fri, 31 Oct 2025 10:46:53 +0300 Subject: [PATCH] Add image type selection feature in AIImages mod, allowing users to choose between portrait and full body images. Update English and Russian localization files to include new labels for image types. Modify UI components to render the image type selector and adjust generation settings accordingly. Update AIImages.dll to reflect these changes. --- Assemblies/AIImages.dll | Bin 105472 -> 106496 bytes Languages/English/Keyed/AIImages.xml | 4 + Languages/Russian/Keyed/AIImages.xml | 4 + .../Models/StableDiffusionSettings.cs | 11 +++ .../Services/AdvancedPromptGenerator.cs | 6 +- .../AIImages/Settings/AIImagesModSettings.cs | 6 ++ Source/AIImages/Window_AIImage.cs | 70 ++++++++++++++++++ 7 files changed, 99 insertions(+), 2 deletions(-) diff --git a/Assemblies/AIImages.dll b/Assemblies/AIImages.dll index 26489bc918a11fbe5f2a2ae0acee83c82985211b..9b40a6c83d2bf25baa007a8ef2268d6cf9bd2b02 100644 GIT binary patch delta 43849 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⁢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 diff --git a/Languages/English/Keyed/AIImages.xml b/Languages/English/Keyed/AIImages.xml index 4a1b8ce..2c8fdbf 100644 --- a/Languages/English/Keyed/AIImages.xml +++ b/Languages/English/Keyed/AIImages.xml @@ -61,6 +61,10 @@ Image saved to: {0} Loaded saved portrait No image generated yet.\nClick "Generate Image" to start. + + Image Type + Portrait + Full Body API Settings Configure connection to Stable Diffusion API diff --git a/Languages/Russian/Keyed/AIImages.xml b/Languages/Russian/Keyed/AIImages.xml index 2a0422a..c5dd326 100644 --- a/Languages/Russian/Keyed/AIImages.xml +++ b/Languages/Russian/Keyed/AIImages.xml @@ -61,6 +61,10 @@ Изображение сохранено в: {0} Загружен сохраненный портрет Изображение еще не сгенерировано.\nНажмите "Сгенерировать изображение" для начала. + + Тип изображения + Портрет + Полное тело Настройки API Настройка подключения к API Stable Diffusion diff --git a/Source/AIImages/Models/StableDiffusionSettings.cs b/Source/AIImages/Models/StableDiffusionSettings.cs index f472b29..859ad1a 100644 --- a/Source/AIImages/Models/StableDiffusionSettings.cs +++ b/Source/AIImages/Models/StableDiffusionSettings.cs @@ -1,5 +1,14 @@ namespace AIImages.Models { + /// + /// Тип генерации изображения + /// + public enum ImageType + { + Portrait, // Портрет + FullBody, // Полное тело + } + /// /// Настройки для генерации изображений через Stable Diffusion /// @@ -16,6 +25,7 @@ namespace AIImages.Models public int Seed { get; set; } public string Model { get; set; } public string ArtStyleDefName { get; set; } + public ImageType ImageType { get; set; } public StableDiffusionSettings() { @@ -30,6 +40,7 @@ namespace AIImages.Models ArtStyleDefName = "ArtStyle_Realistic"; PositivePrompt = ""; NegativePrompt = "ugly, deformed, low quality, blurry, bad anatomy, worst quality"; + ImageType = ImageType.Portrait; } } } diff --git a/Source/AIImages/Services/AdvancedPromptGenerator.cs b/Source/AIImages/Services/AdvancedPromptGenerator.cs index d519026..342974d 100644 --- a/Source/AIImages/Services/AdvancedPromptGenerator.cs +++ b/Source/AIImages/Services/AdvancedPromptGenerator.cs @@ -59,8 +59,10 @@ namespace AIImages.Services prompt.Append(", "); } - // 3. Тип кадра - prompt.Append("portrait, "); + // 3. Тип кадра (portrait или full body) + string frameType = + settings.ImageType == Models.ImageType.FullBody ? "full body, " : "portrait, "; + prompt.Append(frameType); // 4. Пол персонажа (в формате anime/SD теги) string genderTag = appearanceData.Gender == Gender.Female ? "1girl" : "1boy"; diff --git a/Source/AIImages/Settings/AIImagesModSettings.cs b/Source/AIImages/Settings/AIImagesModSettings.cs index 9a663e0..756de16 100644 --- a/Source/AIImages/Settings/AIImagesModSettings.cs +++ b/Source/AIImages/Settings/AIImagesModSettings.cs @@ -44,6 +44,9 @@ namespace AIImages.Settings // Путь для сохранения public string savePath = "AIImages/Generated"; + // Тип генерации + public AIImages.Models.ImageType imageType = AIImages.Models.ImageType.Portrait; + // Флаги public bool autoLoadModels = true; public bool showTechnicalInfo = true; @@ -75,6 +78,8 @@ namespace AIImages.Settings Scribe_Values.Look(ref savePath, "savePath", "AIImages/Generated"); + Scribe_Values.Look(ref imageType, "imageType", AIImages.Models.ImageType.Portrait); + Scribe_Values.Look(ref autoLoadModels, "autoLoadModels", true); Scribe_Values.Look(ref showTechnicalInfo, "showTechnicalInfo", true); Scribe_Values.Look(ref saveGenerationHistory, "saveGenerationHistory", true); @@ -102,6 +107,7 @@ namespace AIImages.Settings ArtStyleDefName = artStyleDefName, PositivePrompt = basePositivePrompt, NegativePrompt = baseNegativePrompt, + ImageType = imageType, }; } } diff --git a/Source/AIImages/Window_AIImage.cs b/Source/AIImages/Window_AIImage.cs index 293c55c..2e8cce9 100644 --- a/Source/AIImages/Window_AIImage.cs +++ b/Source/AIImages/Window_AIImage.cs @@ -793,6 +793,7 @@ namespace AIImages { float curY = rect.y; + curY = DrawImageTypeSelector(rect, curY); curY = DrawImagePreview(rect, curY); curY = DrawGenerationStatus(rect, curY); curY = DrawProgressBar(rect, curY); @@ -1146,6 +1147,75 @@ namespace AIImages return curY; } + /// + /// Отрисовывает селектор типа изображения (портрет/полное тело) + /// + private float DrawImageTypeSelector(Rect rect, float curY) + { + Text.Font = GameFont.Small; + float selectorHeight = 30f; + + // Заголовок + Widgets.Label( + new Rect(rect.x, curY, rect.width * 0.4f, selectorHeight), + "AIImages.ImageType.Label".Translate() + ":" + ); + + // Радио-кнопки для выбора типа + float radioX = rect.x + rect.width * 0.45f; + float radioWidth = rect.width * 0.25f; + float radioSpacing = 5f; + + // Портрет + Rect portraitRect = new Rect(radioX, curY + 2f, radioWidth, selectorHeight - 4f); + bool isPortrait = generationSettings.ImageType == Models.ImageType.Portrait; + if ( + Widgets.RadioButtonLabeled( + portraitRect, + "AIImages.ImageType.Portrait".Translate(), + isPortrait + ) && !isPortrait + ) + { + generationSettings.ImageType = Models.ImageType.Portrait; + // Обновляем настройки в глобальных настройках + AIImagesMod.Settings.imageType = Models.ImageType.Portrait; + // При смене на портрет, можно изменить размеры на более квадратные + if (generationSettings.Width > generationSettings.Height) + { + generationSettings.Height = generationSettings.Width; + } + } + + // Полное тело + Rect fullBodyRect = new Rect( + radioX + radioWidth + radioSpacing, + curY + 2f, + radioWidth, + selectorHeight - 4f + ); + bool isFullBody = generationSettings.ImageType == Models.ImageType.FullBody; + if ( + Widgets.RadioButtonLabeled( + fullBodyRect, + "AIImages.ImageType.FullBody".Translate(), + isFullBody + ) && !isFullBody + ) + { + generationSettings.ImageType = Models.ImageType.FullBody; + // Обновляем настройки в глобальных настройках + AIImagesMod.Settings.imageType = Models.ImageType.FullBody; + // При смене на полное тело, можно увеличить высоту + if (generationSettings.Width >= generationSettings.Height) + { + generationSettings.Height = (int)(generationSettings.Width * 1.5f); + } + } + + return curY + selectorHeight + 10f; + } + private float DrawImagePreview(Rect rect, float curY) { if (generatedImage != null)