Text-to-Image
English
numpy
machine-learning
deep-learning
generative-ai
text-2-image
image-generation
open-weights
model-weights
ai-art
pixel-art
game-development
gamedev
game-assets
asset-generator
sprite-generator
offline
tiny-model
numpy-runtime
int8-quantization
self-supervised
procedural-data
gpt
english-prompts
awesome-ai
File size: 883 Bytes
f001fd1 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | """Sprite rendering: master-palette index grids -> RGBA -> PNG."""
import sys
from pathlib import Path
import numpy as np
from PIL import Image
sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "src"))
from pxg_tiny.config import PALETTE, IMG # noqa: E402
def grid_to_rgba(grid: np.ndarray) -> np.ndarray:
"""(16,16) index grid -> (16,16,4) uint8 RGBA. Index 0 = transparent."""
out = np.zeros((IMG, IMG, 4), dtype=np.uint8)
for idx, rgba in PALETTE.items():
mask = grid == idx
out[mask] = rgba + (255,)
return out
def save_png(grid: np.ndarray, path: Path, scale: int = 8) -> Path:
rgba = grid_to_rgba(np.asarray(grid))
im = Image.fromarray(rgba, "RGBA")
im = im.resize((IMG * scale, IMG * scale), Image.NEAREST)
path = Path(path)
path.parent.mkdir(parents=True, exist_ok=True)
im.save(path)
return path
|