namespace Services.Fooocus { public class Lora { public bool enabled { get; set; } = false; public string model_name { get; set; } = "sd_xl_offset_example-lora_1.0.safetensors"; public double weight { get; set; } = 0.5; } public class FooocusRequest_Text_to_Image { public string prompt { get; set; } = ""; public string negative_prompt { get; set; } = "blurry, low quality, distorted, watermark, text, extra limbs, cropped"; public string[] style_selections { get; set; } = new string[0]; public string performance_selection { get; set; } = "Speed";//Speed, Quality, Extreme Speed public string aspect_ratios_selection { get; set; } = "1152*896"; public int image_number { get; set; } = 1; public int image_seed { get; set; } = -1; public double sharpness { get; set; } = 2.0; //0-30 public double guidance_scale { get; set; } = 4.0;//1-30 public string base_model_name { get; set; }= "juggernautXL_v8Rundiffusion.safetensors"; public string refiner_model_name { get; set; } = "None"; public double refiner_switch { get; set; } = 0.5; public bool require_base64 { get; set; } = false; public bool async_process { get; set; } = false; public Lora[] loras { get; set; } = new Lora[0]; } public class FooocusRequest { // --- PARAMÈTRES DE BASE --- /// /// Description textuelle de l’image à générer. /// Exemple : "un chat steampunk sur un toit". /// Obligatoire. /// public string Prompt { get; set; } = ""; /// /// Liste de ce que l’on veut éviter (qualité faible, flou...). /// Exemple : "blurry, low quality". /// Recommandé pour améliorer la sortie. /// public string NegativePrompt { get; set; } = "blurry, low quality, distorted, watermark, text, extra limbs, cropped"; /// /// Largeur de l’image en pixels. /// Valeurs courantes : 512, 768, 1024. /// Défaut = 768. /// public int Width { get; set; } = 768; /// /// Hauteur de l’image en pixels. /// Valeurs courantes : 512, 768, 1024. /// Défaut = 768. /// public int Height { get; set; } = 768; /// /// Nombre d’itérations de diffusion (steps). /// Plus c’est haut, plus c’est détaillé mais lent. /// Recommandé : 20–40. /// Défaut = 30. /// public int Steps { get; set; } = 40; /// /// Influence du prompt sur le rendu (CFG scale). /// Valeurs typiques : 5–12. /// Recommandé = 7.5. /// public double GuidanceScale { get; set; } = 9.0; // --- STYLE & PERFORMANCE --- /// /// Liste des styles appliqués (ex. "Fooocus V2", "Fooocus Enhance"). /// Peut rester vide. /// public string[] StyleSelections { get; set; } = new string[0]; /// /// Mode de performance. /// Options : "Speed", "Quality", "Extreme Speed". /// Défaut = "Speed". /// public string PerformanceSelection { get; set; } = "Speed"; /// /// À quel moment le modèle "refiner" intervient (0 = jamais, 1 = fin). /// Défaut = 0.5. /// public double RefinerSwitch { get; set; } = 0.0; /// /// Netteté appliquée à l’image finale. /// Valeurs : 1.0 (douce) à 3.0 (très nette). /// Défaut = 2.0. /// public double Sharpness { get; set; } = 2.0; // --- SEED & BATCH --- /// /// Seed de génération. /// -1 = aléatoire. /// Utiliser une seed fixe pour reproductibilité. /// public int ImageSeed { get; set; } = -1; /// /// Nombre d’images à générer en une requête. /// Défaut = 1. /// public int ImageNumber { get; set; } = 1; /// /// Ratio prédéfini de l’image (format). /// Exemple : "768*768", "1152*896". /// Défaut = "768*768". /// public string AspectRatiosSelection { get; set; } = "768*768"; // --- CONTROLNET / IMAGE PROMPTS --- /// /// Première image de référence (ControlNet). /// Peut être une URL ou un chemin. /// public string? CnImg1 { get; set; } /// /// Type de ControlNet pour CnImg1 (ex. "Canny", "Depth", "ImagePrompt"). /// public string? CnType1 { get; set; } /// /// Poids de l’influence de CnImg1 (0–1). /// Défaut ≈ 0.8. /// public double? CnWeight1 { get; set; } /// /// Étape à laquelle arrêter ControlNet (0–1). /// Défaut ≈ 0.2. /// public double? CnStop1 { get; set; } // (Idem pour 4 images maximum) public string? CnImg2 { get; set; } public string? CnType2 { get; set; } public double? CnWeight2 { get; set; } public double? CnStop2 { get; set; } public string? CnImg3 { get; set; } public string? CnType3 { get; set; } public double? CnWeight3 { get; set; } public double? CnStop3 { get; set; } public string? CnImg4 { get; set; } public string? CnType4 { get; set; } public double? CnWeight4 { get; set; } public double? CnStop4 { get; set; } // --- LORAS --- /// /// Utiliser les LoRAs par défaut du modèle. /// Défaut = true. /// public bool UseDefaultLoras { get; set; } = false; /// /// URLs de LoRAs personnalisés (séparés par des virgules). /// public string? LorasCustomUrls { get; set; } /// /// Poids d’influence des LoRAs. /// Défaut = 1.0. /// public double? LorasWeight { get; set; } = 0.0; // --- INPAINTING --- /// /// Image d’entrée pour l’inpainting (corriger une zone). /// public string? InpaintInputImage { get; set; } /// /// Masque de l’inpainting (zones à modifier en noir). /// public string? InpaintInputMask { get; set; } // --- OUTPAINTING --- /// /// Mode d’outpainting (agrandir une image au-delà des bords). /// Exemple : "left,right,top". /// public string? OutpaintSelections { get; set; } /// /// Distance d’extension en haut (en pixels). /// Défaut = 0. /// public int OutpaintDistanceTop { get; set; } = 0; public int OutpaintDistanceLeft { get; set; } = 0; public int OutpaintDistanceRight { get; set; } = 0; public int OutpaintDistanceBottom { get; set; } = 0; // --- UPSCALE / VARIATIONS --- /// /// Méthode appliquée : "Upscale", "Variation", "Outpaint". /// public string? UovMethod { get; set; } /// /// Image d’entrée pour upscale ou variation. /// public string? UovInputImage { get; set; } } }