### 🇷🇺 Русский
# 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. Клонирование репозитория
```bash
git clone https://github.com/yourusername/stable-diffusion-gui.git
cd stable-diffusion-gui
```
### 2. Установка зависимостей Python
```bash
pip install -r requirements.txt
```
### 3. Установка зависимостей Node.js (для сервера)
```bash
cd server
npm install
```
### 4. Запуск сервера
```bash
node server.js
```
### 5. Запуск клиента
```bash
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. Создайте новую ветку
```bash
git checkout -b feature/new-feature
```
### 3. Закоммитьте изменения
```bash
git commit -m "feat: add new cool feature"
```
### 4. Загрузите ветку
```bash
git push origin feature/new-feature
```
### 5. Откройте Pull Request
> Мы используем [Conventional Commits](https://www.conventionalcommits.org/) для форматирования комментариев к коммитам.
## 📜 Лицензия
Проект распространяется под лицензией **MIT License**.
---
### 🇬🇧 English
# Stable Diffusion GUI
**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
```bash
git clone https://github.com/yourusername/stable-diffusion-gui.git
cd stable-diffusion-gui
```
### 2. Install Python dependencies
```bash
pip install -r requirements.txt
```
### 3. Install Node.js dependencies (for server)
```bash
cd server
npm install
```
### 4. Start server
```bash
node server.js
```
### 5. Launch app
```bash
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
```bash
git checkout -b feature/new-feature
```
### 3. Commit changes
```bash
git commit -m "feat: add new cool feature"
```
### 4. Push branch
```bash
git push origin feature/new-feature
```
### 5. Open a Pull Request
> We use [Conventional Commits](https://www.conventionalcommits.org/) for commit message formatting.
## 📜 License
This project is licensed under the **MIT License**.