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; }
}
}