dass777 commited on
Commit
a936970
·
verified ·
1 Parent(s): d5b263d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -26
app.py CHANGED
@@ -2,35 +2,23 @@
2
  import gradio as gr
3
  from huggingface_hub import InferenceClient
4
  import os
5
- from PIL import Image, ImageDraw
6
 
7
  HF_TOKEN = os.environ["HF_TOKEN"]
8
  client = InferenceClient(token=HF_TOKEN)
9
 
10
- def create_center_mask(image: Image.Image) -> Image.Image:
11
- """Создаёт маску в центре изображения (пример для окна)"""
12
- w, h = image.size
13
- # Пример: маска 60% ширины и 80% высоты по центру
14
- left = int(w * 0.2)
15
- top = int(h * 0.1)
16
- right = int(w * 0.8)
17
- bottom = int(h * 0.9)
18
- mask = Image.new("L", (w, h), 0)
19
- draw = ImageDraw.Draw(mask)
20
- draw.rectangle([left, top, right, bottom], fill=255)
21
- return mask
22
-
23
- def add_curtains(image, style="classic", color="beige"):
24
- if image is None:
25
- return "❌ Загрузите фото окна"
26
 
27
- try:
28
- # Создаём маску (позже можно заменить на ручной выбор)
29
- mask = create_center_mask(image)
30
 
31
- prompt = f"{style} {color} curtains on the window, photorealistic, natural lighting, soft fabric"
 
32
 
33
- # Вызываем inpainting
 
 
34
  result = client.inpainting(
35
  image=image,
36
  mask_image=mask,
@@ -44,14 +32,16 @@ def add_curtains(image, style="classic", color="beige"):
44
  demo = gr.Interface(
45
  fn=add_curtains,
46
  inputs=[
47
- gr.Image(type="pil", label="Фото вашего окна"),
 
 
 
48
  gr.Radio(["classic", "modern", "roman"], value="classic", label="Стиль штор"),
49
  gr.Textbox(value="beige", label="Цвет (например: white, navy blue)")
50
  ],
51
  outputs=gr.Image(label="Результат со шторами"),
52
  title="🪟 Виртуальная примерка штор",
53
- description="Загрузите фото окна — ИИ добавит шторы!"
54
  )
55
 
56
- if __name__ == "__main__":
57
- demo.launch()
 
2
  import gradio as gr
3
  from huggingface_hub import InferenceClient
4
  import os
 
5
 
6
  HF_TOKEN = os.environ["HF_TOKEN"]
7
  client = InferenceClient(token=HF_TOKEN)
8
 
9
+ def add_curtains(editor_data, style="classic", color="beige"):
10
+ if editor_data is None:
11
+ return "❌ Пожалуйста, загрузите фото и нарисуйте область окна."
 
 
 
 
 
 
 
 
 
 
 
 
 
12
 
13
+ image = editor_data["image"] # PIL.Image
14
+ mask = editor_data["mask"] # PIL.Image (чёрно-белая маска)
 
15
 
16
+ if image is None or mask is None:
17
+ return "❌ Нарисуйте маску на окне."
18
 
19
+ prompt = f"{style} {color} curtains on the window, photorealistic, natural lighting"
20
+
21
+ try:
22
  result = client.inpainting(
23
  image=image,
24
  mask_image=mask,
 
32
  demo = gr.Interface(
33
  fn=add_curtains,
34
  inputs=[
35
+ gr.ImageEditor(
36
+ label="1. Загрузите фото окна\n2. Нажмите 'Edit' → выберите кисть → закрасьте область окна белым",
37
+ type="pil"
38
+ ),
39
  gr.Radio(["classic", "modern", "roman"], value="classic", label="Стиль штор"),
40
  gr.Textbox(value="beige", label="Цвет (например: white, navy blue)")
41
  ],
42
  outputs=gr.Image(label="Результат со шторами"),
43
  title="🪟 Виртуальная примерка штор",
44
+ description="Нарисуйте маску на окне — ИИ добавит туда шторы!"
45
  )
46
 
47
+ demo.launch()