Files
2025-05-06 17:50:39 +07:00

9.3 KiB

🇷🇺 Русский

Stable Diffusion GUI

Пример интерфейса

Stable Diffusion GUI — это удобное графическое приложение с интуитивным интерфейсом для генерации изображений через API Stable Diffusion. Приложение написано на Python с использованием PyQt6 и имеет клиент-серверную архитектуру.

🔍 Описание

Это приложение позволяет вам:

  • Генерировать изображения через API Stable Diffusion
  • Управлять моделями, сэмплерами и размерами изображений
  • Использовать готовые промпты и негативные промпты
  • Отслеживать прогресс генерации
  • Сохранять и копировать результаты
  • Настраивать внешний вид и поведение через меню настроек

🧰 Технологии

  • Python — основной язык программирования
  • PyQt6 — библиотека для создания графического интерфейса
  • Node.js + Express — серверная часть для прокси-запросов
  • Stable Diffusion WebUI API — поддержка стандартного API
  • JSON — обмен данными между клиентом и сервером

📦 Структура проекта

stable-diffusion-gui/
├── main.py                     # Главное окно приложения
├── modules/                    # Модули приложения
│   ├── console_window.py       # Консоль для логов
│   ├── model_manager.py        # Выбор модели
│   ├── prompt_window.py        # Готовые промпты
│   ├── negative_prompt_window.py # Негативные промпты
│   ├── sampler_manager.py      # Управление сэмплерами
│   ├── size_preset_manager.py  # Пресеты размеров
│   └── settings_menu.py        # Настройки приложения
├── resources/                  # Ресурсы (иконки, стили)
├── server/                     # Серверная часть
│   ├── package.json
│   └── server.js               # Прокси для API Stable Diffusion
├── requirements.txt            # Зависимости Python
└── README.md                   # Это описание

⚙️ Установка и запуск

1. Клонирование репозитория

git clone https://github.com/yourusername/stable-diffusion-gui.git
cd stable-diffusion-gui

2. Установка зависимостей Python

pip install -r requirements.txt

3. Установка зависимостей Node.js (для сервера)

cd server
npm install

4. Запуск сервера

node server.js

5. Запуск клиента

python main.py

🖥️ Интерфейс

Основные элементы:

  • Поле ввода промпта и негативного промпта
  • Выбор модели, сэмплера, размера изображения
  • Настройки генерации (CFG Scale, Steps, Seed)
  • Кнопка "Сгенерировать"
  • Прогресс-бар
  • Область вывода изображений с возможностью сохранения и копирования

Дополнительно:

  • Горячие клавиши (Ctrl+G — генерация, `Ctrl+`` — открыть консоль)
  • Поддержка темной и светлой темы
  • Встроенная консоль для просмотра логов

🛠️ API Прокси (server.js)

Приложение использует простой Node.js-сервер для проксирования запросов к API Stable Diffusion, чтобы избежать проблем с CORS и добавить дополнительные функции, такие как отслеживание прогресса.

Доступные эндпоинты:

Эндпоинт Описание
/api/txt2img Генерация изображения
/api/progress Получение прогресса генерации
/api/sd-models Список доступных моделей
/api/samplers Список доступных сэмплеров

🤝 Как принять участие

Вы можете улучшать проект, создавая pull request'ы или issues:

1. Форкните репозиторий

2. Создайте новую ветку

git checkout -b feature/new-feature

3. Закоммитьте изменения

git commit -m "feat: add new cool feature"

4. Загрузите ветку

git push origin feature/new-feature

5. Откройте Pull Request

Мы используем Conventional Commits для форматирования комментариев к коммитам.

📜 Лицензия

Проект распространяется под лицензией MIT License.


🇬🇧 English

Stable Diffusion GUI

Example UI

Stable Diffusion GUI is a user-friendly graphical application for generating images using the Stable Diffusion API. It's built with Python and PyQt6, featuring a client-server architecture.

🔍 Description

This application allows you to:

  • Generate images via Stable Diffusion API
  • Manage models, samplers, and image sizes
  • Use ready-made prompts and negative prompts
  • Track generation progress
  • Save and copy results
  • Customize appearance and behavior through the settings menu

🧰 Technologies

  • Python — primary programming language
  • PyQt6 — GUI library
  • Node.js + Express — backend proxy server
  • Stable Diffusion WebUI API — standard API support
  • JSON — data exchange between client and server

📦 Project Structure

stable-diffusion-gui/
├── main.py                     # Main window app
├── modules/                    # Application modules
│   ├── console_window.py       # Logging console
│   ├── model_manager.py        # Model selector
│   ├── prompt_window.py        # Prompt selector
│   ├── negative_prompt_window.py # Negative prompts
│   ├── sampler_manager.py      # Sampler manager
│   ├── size_preset_manager.py  # Size presets
│   └── settings_menu.py        # Settings menu
├── resources/                  # Resources (icons, styles)
├── server/                     # Server part
│   ├── package.json
│   └── server.js               # Proxy server
├── requirements.txt            # Python dependencies
└── README.md                   # This file

⚙️ Installation & Run

1. Clone repository

git clone https://github.com/yourusername/stable-diffusion-gui.git
cd stable-diffusion-gui

2. Install Python dependencies

pip install -r requirements.txt

3. Install Node.js dependencies (for server)

cd server
npm install

4. Start server

node server.js

5. Launch app

python main.py

🖥️ Interface

Key Features:

  • Prompt/Negative prompt input fields
  • Model, Sampler, Image size selection
  • Generation settings (CFG Scale, Steps, Seed)
  • Generate button
  • Progress bar
  • Image output area with save/copy options

Extra:

  • Hotkeys (Ctrl+G — generate, `Ctrl+`` — open console)
  • Dark/Light theme toggle
  • Built-in logging console

🛠️ API Proxy (server.js)

The app uses a simple Node.js server to proxy requests to the Stable Diffusion API to avoid CORS issues and add extra features like progress tracking.

Available Endpoints:

Endpoint Description
/api/txt2img Image generation
/api/progress Get generation progress
/api/sd-models List of available models
/api/samplers List of available samplers

🤝 How to Contribute

You can help improve this project by creating pull requests or issues:

1. Fork the repo

2. Create a new branch

git checkout -b feature/new-feature

3. Commit changes

git commit -m "feat: add new cool feature"

4. Push branch

git push origin feature/new-feature

5. Open a Pull Request

We use Conventional Commits for commit message formatting.

📜 License

This project is licensed under the MIT License.