You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

242 satır
7.0KB

  1. namespace Services.Fooocus
  2. {
  3. public class Lora
  4. {
  5. public bool enabled { get; set; } = false;
  6. public string model_name { get; set; } = "sd_xl_offset_example-lora_1.0.safetensors";
  7. public double weight { get; set; } = 0.5;
  8. }
  9. public class FooocusRequest_Text_to_Image
  10. {
  11. public string prompt { get; set; } = "";
  12. public string negative_prompt { get; set; } = "blurry, low quality, distorted, watermark, text, extra limbs, cropped";
  13. public string[] style_selections { get; set; } = new string[0];
  14. public string performance_selection { get; set; } = "Speed";//Speed, Quality, Extreme Speed
  15. public string aspect_ratios_selection { get; set; } = "1152*896";
  16. public int image_number { get; set; } = 1;
  17. public int image_seed { get; set; } = -1;
  18. public double sharpness { get; set; } = 2.0; //0-30
  19. public double guidance_scale { get; set; } = 4.0;//1-30
  20. public string base_model_name { get; set; }= "juggernautXL_v8Rundiffusion.safetensors";
  21. public string refiner_model_name { get; set; } = "None";
  22. public double refiner_switch { get; set; } = 0.5;
  23. public bool require_base64 { get; set; } = false;
  24. public bool async_process { get; set; } = false;
  25. public Lora[] loras { get; set; } = new Lora[0];
  26. }
  27. public class FooocusRequest
  28. {
  29. // --- PARAMÈTRES DE BASE ---
  30. /// <summary>
  31. /// Description textuelle de l’image à générer.
  32. /// Exemple : "un chat steampunk sur un toit".
  33. /// Obligatoire.
  34. /// </summary>
  35. public string Prompt { get; set; } = "";
  36. /// <summary>
  37. /// Liste de ce que l’on veut éviter (qualité faible, flou...).
  38. /// Exemple : "blurry, low quality".
  39. /// Recommandé pour améliorer la sortie.
  40. /// </summary>
  41. public string NegativePrompt { get; set; } = "blurry, low quality, distorted, watermark, text, extra limbs, cropped";
  42. /// <summary>
  43. /// Largeur de l’image en pixels.
  44. /// Valeurs courantes : 512, 768, 1024.
  45. /// Défaut = 768.
  46. /// </summary>
  47. public int Width { get; set; } = 768;
  48. /// <summary>
  49. /// Hauteur de l’image en pixels.
  50. /// Valeurs courantes : 512, 768, 1024.
  51. /// Défaut = 768.
  52. /// </summary>
  53. public int Height { get; set; } = 768;
  54. /// <summary>
  55. /// Nombre d’itérations de diffusion (steps).
  56. /// Plus c’est haut, plus c’est détaillé mais lent.
  57. /// Recommandé : 20–40.
  58. /// Défaut = 30.
  59. /// </summary>
  60. public int Steps { get; set; } = 40;
  61. /// <summary>
  62. /// Influence du prompt sur le rendu (CFG scale).
  63. /// Valeurs typiques : 5–12.
  64. /// Recommandé = 7.5.
  65. /// </summary>
  66. public double GuidanceScale { get; set; } = 9.0;
  67. // --- STYLE & PERFORMANCE ---
  68. /// <summary>
  69. /// Liste des styles appliqués (ex. "Fooocus V2", "Fooocus Enhance").
  70. /// Peut rester vide.
  71. /// </summary>
  72. public string[] StyleSelections { get; set; } = new string[0];
  73. /// <summary>
  74. /// Mode de performance.
  75. /// Options : "Speed", "Quality", "Extreme Speed".
  76. /// Défaut = "Speed".
  77. /// </summary>
  78. public string PerformanceSelection { get; set; } = "Speed";
  79. /// <summary>
  80. /// À quel moment le modèle "refiner" intervient (0 = jamais, 1 = fin).
  81. /// Défaut = 0.5.
  82. /// </summary>
  83. public double RefinerSwitch { get; set; } = 0.0;
  84. /// <summary>
  85. /// Netteté appliquée à l’image finale.
  86. /// Valeurs : 1.0 (douce) à 3.0 (très nette).
  87. /// Défaut = 2.0.
  88. /// </summary>
  89. public double Sharpness { get; set; } = 2.0;
  90. // --- SEED & BATCH ---
  91. /// <summary>
  92. /// Seed de génération.
  93. /// -1 = aléatoire.
  94. /// Utiliser une seed fixe pour reproductibilité.
  95. /// </summary>
  96. public int ImageSeed { get; set; } = -1;
  97. /// <summary>
  98. /// Nombre d’images à générer en une requête.
  99. /// Défaut = 1.
  100. /// </summary>
  101. public int ImageNumber { get; set; } = 1;
  102. /// <summary>
  103. /// Ratio prédéfini de l’image (format).
  104. /// Exemple : "768*768", "1152*896".
  105. /// Défaut = "768*768".
  106. /// </summary>
  107. public string AspectRatiosSelection { get; set; } = "768*768";
  108. // --- CONTROLNET / IMAGE PROMPTS ---
  109. /// <summary>
  110. /// Première image de référence (ControlNet).
  111. /// Peut être une URL ou un chemin.
  112. /// </summary>
  113. public string? CnImg1 { get; set; }
  114. /// <summary>
  115. /// Type de ControlNet pour CnImg1 (ex. "Canny", "Depth", "ImagePrompt").
  116. /// </summary>
  117. public string? CnType1 { get; set; }
  118. /// <summary>
  119. /// Poids de l’influence de CnImg1 (0–1).
  120. /// Défaut ≈ 0.8.
  121. /// </summary>
  122. public double? CnWeight1 { get; set; }
  123. /// <summary>
  124. /// Étape à laquelle arrêter ControlNet (0–1).
  125. /// Défaut ≈ 0.2.
  126. /// </summary>
  127. public double? CnStop1 { get; set; }
  128. // (Idem pour 4 images maximum)
  129. public string? CnImg2 { get; set; }
  130. public string? CnType2 { get; set; }
  131. public double? CnWeight2 { get; set; }
  132. public double? CnStop2 { get; set; }
  133. public string? CnImg3 { get; set; }
  134. public string? CnType3 { get; set; }
  135. public double? CnWeight3 { get; set; }
  136. public double? CnStop3 { get; set; }
  137. public string? CnImg4 { get; set; }
  138. public string? CnType4 { get; set; }
  139. public double? CnWeight4 { get; set; }
  140. public double? CnStop4 { get; set; }
  141. // --- LORAS ---
  142. /// <summary>
  143. /// Utiliser les LoRAs par défaut du modèle.
  144. /// Défaut = true.
  145. /// </summary>
  146. public bool UseDefaultLoras { get; set; } = false;
  147. /// <summary>
  148. /// URLs de LoRAs personnalisés (séparés par des virgules).
  149. /// </summary>
  150. public string? LorasCustomUrls { get; set; }
  151. /// <summary>
  152. /// Poids d’influence des LoRAs.
  153. /// Défaut = 1.0.
  154. /// </summary>
  155. public double? LorasWeight { get; set; } = 0.0;
  156. // --- INPAINTING ---
  157. /// <summary>
  158. /// Image d’entrée pour l’inpainting (corriger une zone).
  159. /// </summary>
  160. public string? InpaintInputImage { get; set; }
  161. /// <summary>
  162. /// Masque de l’inpainting (zones à modifier en noir).
  163. /// </summary>
  164. public string? InpaintInputMask { get; set; }
  165. // --- OUTPAINTING ---
  166. /// <summary>
  167. /// Mode d’outpainting (agrandir une image au-delà des bords).
  168. /// Exemple : "left,right,top".
  169. /// </summary>
  170. public string? OutpaintSelections { get; set; }
  171. /// <summary>
  172. /// Distance d’extension en haut (en pixels).
  173. /// Défaut = 0.
  174. /// </summary>
  175. public int OutpaintDistanceTop { get; set; } = 0;
  176. public int OutpaintDistanceLeft { get; set; } = 0;
  177. public int OutpaintDistanceRight { get; set; } = 0;
  178. public int OutpaintDistanceBottom { get; set; } = 0;
  179. // --- UPSCALE / VARIATIONS ---
  180. /// <summary>
  181. /// Méthode appliquée : "Upscale", "Variation", "Outpaint".
  182. /// </summary>
  183. public string? UovMethod { get; set; }
  184. /// <summary>
  185. /// Image d’entrée pour upscale ou variation.
  186. /// </summary>
  187. public string? UovInputImage { get; set; }
  188. }
  189. }