Об этом проекте
Sprite Fusion Pixel Snapper — это инструмент, предназначенный для привязки пикселей к идеальной сетке, в частности для исправления беспорядочной и несогласованной пиксельной графики, созданной ИИ. Он решает такие проблемы, как несогласованные размеры и позиции пикселей, дрейфующее разрешение сетки и цвета, не привязанные к строгой палитре. Инструмент обеспечивает привязку пикселей к идеальной сетке, поддерживает согласованное разрешение сетки, которое можно масштабировать, и квантует цвета к строгой палитре с поддержкой пользовательских палитр.
Он идеально подходит для пиксельной графики, созданной ИИ, процедурной 2D-графики, не вписывающейся в сетку (например, тайлмапов или изометрических карт), а также для 2D-игровых ресурсов или 3D-текстур, которые должны быть идеально масштабируемыми. Инструмент сохраняет как можно больше деталей, включая дизеринг.
## Возможности
- **Привязка к сетке**: пиксели выравниваются по идеальной сетке.
- **Согласованное разрешение**: разрешение сетки согласовано и может быть масштабировано до разрешения пикселей.
- **Квантование палитры**: цвета привязаны к строгой квантованной палитре; поддерживаются пользовательские палитры.
- **Пакетная обработка**: обработка целых каталогов изображений.
- **CLI и Web (WASM)**: доступен как инструмент командной строки и как модуль WebAssembly для интеграции в веб-проекты.
- **Настольная версия**: также доступен как настольное приложение.
## Использование CLI
Установка через Homebrew:
```bash
brew install Hugo-Dz/tap/spritefusion-pixel-snapper
```
Или через Cargo (требуется Rust):
```bash
cargo install spritefusion-pixel-snapper
```
Использование:
```text
spritefusion-pixel-snapper <INPUT> <OUTPUT> [COLOR_COUNT] [OPTIONS]
```
- `<INPUT>`: изображение PNG/JPEG или каталог для пакетной обработки.
- `<OUTPUT>`: выходной PNG или другой выходной каталог для пакетной обработки.
- `[COLOR_COUNT]`: количество цветов палитры. По умолчанию `16`.
- `--pixel-size <PIXELS>`: переопределяет автоматически определённый размер пикселя. Должен быть от 1 до половины наименьшего размера изображения.
- `--palette <HEX,...>`: ограничивает вывод шестизначными шестнадцатеричными цветами, разделёнными запятыми.
Примеры:
```bash
# Квантовать изображение до 16-цветной палитры
spritefusion-pixel-snapper input.png output.png 16
# Обработать каталог пакетно
spritefusion-pixel-snapper sprites/batch_inputs sprites/batch_outputs 16
# Переопределить автоматически определённый размер пикселя
spritefusion-pixel-snapper input.png output.png --pixel-size 8
spritefusion-pixel-snapper sprites/batch_inputs sprites/batch_outputs 16 --pixel-size 8
# Использовать фиксированную цветовую палитру
spritefusion-pixel-snapper input.png output.png --palette "0d2b45,203c56,544e68,8d697a,d08159,ffaa5e,ffd4a3,ffecd6"
spritefusion-pixel-snapper sprites/batch_inputs sprites/batch_outputs --palette "0d2b45,203c56,544e68,8d697a"
```
Запустите `spritefusion-pixel-snapper --help`, чтобы увидеть все опции.
## Использование Web (WASM)
Сборка модуля WASM:
```bash
wasm-pack build --target web --out-dir pkg --release
```
Затем используйте его в своём проекте:
```js
import init, { process_image } from "./pkg/spritefusion_pixel_snapper.js";
await init();
// process_image(inputBytes, kColors?, pixelSizeOverride?, paletteHex?)
const outputBytes = process_image(inputBytes, 16);
// С пользовательской палитрой
const recoloredBytes = process_image(inputBytes, null, null, "0f0f1b,ffecd6,ff4d6d,29adff");
```
Передайте `null` для любого необязательного аргумента, чтобы использовать поведение по умолчанию.
## Сборка из исходного кода
```bash
git clone https://github.com/Hugo-Dz/spritefusion-pixel-snapper.git
cd spritefusion-pixel-snapper
cargo build --release
```
Бинарный файл будет находиться в `target/release/spritefusion-pixel-snapper`.
## Благодарности
Pixel Snapper — это проект Sprite Fusion. Sprite Fusion — это инструмент для генерации НАСТОЯЩИХ спрайтов и анимаций пиксельной графики для разработки игр.
## Лицензия
MIT License (Hugo Duprez)
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.