EnvelGo's picture
Update app.py
a99da32 verified
import gradio as gr
import random
# Загрузка модели
model = gr.load(
"models/fffiloni/cute-comic-800",
provider="hf-inference",
)
# Создание интерфейса с детским стилем
with gr.Blocks() as demo:
# Входное текстовое поле
input_text = gr.Textbox(label="Напиши, что хочешь увидеть на картинке в стиле Minecraft!")
# Параметры для настройки генерации
environment_checkbox = gr.CheckboxGroup(
label="Добавь объекты на картинку",
choices=["Деревья", "Горы", "Водопад", "Домик", "Пещера", "Озеро"],
value=[]
)
weather_checkbox = gr.CheckboxGroup(
label="Добавь погоду",
choices=["Солнечно", "Дождь", "Снег", "Туман"],
value=[]
)
effects_checkbox = gr.CheckboxGroup(
label="Добавь эффекты",
choices=["Тень", "Свет", "Размытость"],
value=[]
)
# Выбор стиля
style_dropdown = gr.Dropdown(
label="Выбери стиль",
choices=["Пиксель-арт", "Комикс", "Мультфильм"],
value="Пиксель-арт"
)
# Выбор цветовой палитры
color_palette_dropdown = gr.Dropdown(
label="Выбери цветовую палитру",
choices=["Яркая", "Пастельная", "Темная"],
value="Яркая"
)
# Кнопка для запуска модели
submit_button = gr.Button("Создать картинку")
# Выходное изображение
output_image = gr.Image(label="Вот твоя картинка!", type="filepath", height=500)
# Кнопка для скачивания изображения
download_button = gr.DownloadButton("Скачать картинку")
# Обработчик события нажатия кнопки
def generate_and_display(text, environment, weather, effects, style, color_palette):
# Перевод параметров на английский
environment_mapping = {
"Деревья": "trees",
"Горы": "mountains",
"Водопад": "waterfall",
"Домик": "house",
"Пещера": "cave",
"Озеро": "lake"
}
weather_mapping = {
"Солнечно": "sunny",
"Дождь": "rain",
"Снег": "snow",
"Туман": "fog"
}
effects_mapping = {
"Тень": "shadow",
"Свет": "light",
"Размытость": "blur"
}
style_mapping = {
"Пиксель-арт": "pixel art",
"Комикс": "comic",
"Мультфильм": "cartoon"
}
color_palette_mapping = {
"Яркая": "bright",
"Пастельная": "pastel",
"Темная": "dark"
}
# Формирование промта с выбранными параметрами
prompt_parts = [text, f"in {style_mapping[style]} style", f"with a {color_palette_mapping[color_palette]} color palette"]
if environment:
prompt_parts.append(f"Add environment: {', '.join([environment_mapping[env] for env in environment])}")
if weather:
prompt_parts.append(f"Add weather: {', '.join([weather_mapping[w] for w in weather])}")
if effects:
prompt_parts.append(f"Add effects: {', '.join([effects_mapping[e] for e in effects])}")
prompt_parts.append("in Minecraft style")
seed = random.randint(0, 10000)
prompt_parts.append(f"Seed: {seed}")
prompt = " ".join(prompt_parts)
# Вывод промта в лог
print("Сгенерированный промт:", prompt)
# Генерация изображения
image_path = model(prompt)
return image_path, image_path
submit_button.click(generate_and_display, inputs=[input_text, environment_checkbox, weather_checkbox, effects_checkbox, style_dropdown, color_palette_dropdown], outputs=[output_image, download_button])
# Запуск интерфейса
demo.launch()