vcollos commited on
Commit
a65577b
·
verified ·
1 Parent(s): 76d2d1f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -4
app.py CHANGED
@@ -6,6 +6,7 @@ from diffusers import DiffusionPipeline
6
  import random
7
  import os
8
  import json
 
9
  from gradio_client import Client as client_gradio
10
  from supabase import create_client, Client
11
  from datetime import datetime
@@ -41,6 +42,26 @@ except Exception as e:
41
  # Define seed máximo
42
  MAX_SEED = 2**32 - 1
43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  @spaces.GPU(duration=80)
45
  def run_lora(prompt, cfg_scale, steps, randomize_seed, seed, width, height, lora_scale_1, lora_scale_2, progress=gr.Progress(track_tqdm=True)):
46
  # Define uma seed aleatória se necessário
@@ -86,6 +107,28 @@ def run_lora(prompt, cfg_scale, steps, randomize_seed, seed, width, height, lora
86
  generator=generator
87
  ).images[0]
88
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  return image, seed
90
 
91
  # Interface Gradio
@@ -98,15 +141,15 @@ with gr.Blocks(theme=gr_theme) as app:
98
  generate_button = gr.Button("Gerar")
99
  cfg_scale = gr.Slider(label="CFG Scale", minimum=1, maximum=20, step=0.5, value=3.5)
100
  steps = gr.Slider(label="Steps", minimum=1, maximum=100, step=1, value=25)
101
- width = gr.Slider(label="Width", minimum=256, maximum=1024, step=64, value=768) # Reduzido para evitar falta de VRAM
102
- height = gr.Slider(label="Height", minimum=256, maximum=1024, step=64, value=768) # Reduzido para evitar falta de VRAM
103
  randomize_seed = gr.Checkbox(False, label="Randomize seed")
104
  seed = gr.Slider(label="Seed", minimum=0, maximum=MAX_SEED, step=1, value=556215326)
105
- lora_scale_1 = gr.Slider(label="LoRA Scale (AndroFlux)", minimum=0, maximum=1, step=0.01, value=0.7)
106
  lora_scale_2 = gr.Slider(label="LoRA Scale (VitorCollos)", minimum=0, maximum=1, step=0.01, value=1)
107
  with gr.Column(scale=1):
108
  result = gr.Image(label="Generated Image")
109
- gr.Markdown("Gere imagens usando Androflux LoRA e um prompt de texto.\n[[Licença não comercial, Flux.1 Dev](https://huggingface.co/black-forest-labs/FLUX.1-dev/blob/main/LICENSE.md)]")
110
 
111
  generate_button.click(
112
  run_lora,
 
6
  import random
7
  import os
8
  import json
9
+ import io
10
  from gradio_client import Client as client_gradio
11
  from supabase import create_client, Client
12
  from datetime import datetime
 
42
  # Define seed máximo
43
  MAX_SEED = 2**32 - 1
44
 
45
+ def upload_image_to_supabase(image, filename):
46
+ """ Faz upload da imagem gerada para o Supabase Storage e retorna a URL pública. """
47
+ # Converte a imagem para bytes
48
+ img_bytes = io.BytesIO()
49
+ image.save(img_bytes, format="PNG")
50
+ img_bytes.seek(0)
51
+
52
+ # Define o caminho do arquivo no Supabase Storage
53
+ storage_path = f"images/{filename}"
54
+
55
+ # Faz upload para o bucket "images"
56
+ response = supabase.storage.from_("images").upload(storage_path, img_bytes, {"content-type": "image/png"})
57
+
58
+ if response.get("error"):
59
+ raise Exception(f"Erro ao salvar no Supabase: {response['error']}")
60
+
61
+ # Retorna a URL pública da imagem
62
+ base_url = f"{url}/storage/v1/object/public/images"
63
+ return f"{base_url}/{filename}"
64
+
65
  @spaces.GPU(duration=80)
66
  def run_lora(prompt, cfg_scale, steps, randomize_seed, seed, width, height, lora_scale_1, lora_scale_2, progress=gr.Progress(track_tqdm=True)):
67
  # Define uma seed aleatória se necessário
 
107
  generator=generator
108
  ).images[0]
109
 
110
+ # Define um nome único para a imagem
111
+ filename = f"image_{seed}_{datetime.utcnow().strftime('%Y%m%d%H%M%S')}.png"
112
+
113
+ # Faz upload da imagem para o Supabase Storage
114
+ try:
115
+ image_url = upload_image_to_supabase(image, filename)
116
+ print(f"✅ Imagem salva no Supabase: {image_url}")
117
+ except Exception as e:
118
+ print(f"❌ Erro ao fazer upload da imagem: {e}")
119
+ image_url = None
120
+
121
+ # Salva os metadados no banco de dados Supabase
122
+ supabase.table("images").insert({
123
+ "prompt": prompt,
124
+ "cfg_scale": cfg_scale,
125
+ "steps": steps,
126
+ "seed": seed,
127
+ "lora_scale_1": lora_scale_1,
128
+ "lora_scale_2": lora_scale_2,
129
+ "image_url": image_url
130
+ }).execute()
131
+
132
  return image, seed
133
 
134
  # Interface Gradio
 
141
  generate_button = gr.Button("Gerar")
142
  cfg_scale = gr.Slider(label="CFG Scale", minimum=1, maximum=20, step=0.5, value=3.5)
143
  steps = gr.Slider(label="Steps", minimum=1, maximum=100, step=1, value=25)
144
+ width = gr.Slider(label="Width", minimum=256, maximum=1024, step=64, value=768)
145
+ height = gr.Slider(label="Height", minimum=256, maximum=1024, step=64, value=1024)
146
  randomize_seed = gr.Checkbox(False, label="Randomize seed")
147
  seed = gr.Slider(label="Seed", minimum=0, maximum=MAX_SEED, step=1, value=556215326)
148
+ lora_scale_1 = gr.Slider(label="LoRA Scale (AndroFlux)", minimum=0, maximum=1, step=0.01, value=0.5)
149
  lora_scale_2 = gr.Slider(label="LoRA Scale (VitorCollos)", minimum=0, maximum=1, step=0.01, value=1)
150
  with gr.Column(scale=1):
151
  result = gr.Image(label="Generated Image")
152
+ gr.Markdown("Gere imagens usando Collos e um prompt de texto.")
153
 
154
  generate_button.click(
155
  run_lora,