Spaces:
Running
Running
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() | |