Ein browserbasiertes Pixel-Art-Tool zum Zeichnen, Animieren und Exportieren von 2D-Charakteren.
Optimiert für iPad + Apple Pencil · Vanilla JS · Docker-ready · Keine Dependencies
Features · Quick Start · iPad-Nutzung · Architektur · Contributing
- Stift — Pixel-genaues Zeichnen mit einstellbarer Brush-Größe (1–4px)
- Radierer — Pixel löschen
- Fülleimer — Flood-Fill-Algorithmus
- Linie — Bresenham-Linien in Echtzeit
- Rechteck — Pixel-perfekte Rechtecke
- Kreis — Bresenham-Kreise
- Auswahl — Bereich auswählen
- Verschieben — Canvas verschieben (Pan)
- Pipette — Farbe aufnehmen
- Spiegel-Modus — Symmetrisches Zeichnen entlang der Y-Achse
- Integrierter Color-Picker mit Alpha/Deckkraft-Regler
- Primär- & Sekundärfarbe mit Schnellwechsel (
X) - 30+ vordefinierte Pixel-Art-Farben
- Eigene Farben zur Palette hinzufügen
- Rechtsklick zum Entfernen von Palettenfarben
- Unbegrenzte Ebenen pro Frame
- Sichtbarkeit ein/ausschalten
- Deckkraft pro Ebene (0–100%)
- Ebenen zusammenfügen (Merge Down)
- Ebenen-Reihenfolge anpassbar
- Frame-basierte Timeline
- Echtzeit-Vorschau mit einstellbaren FPS (1–60)
- Frames duplizieren
- Onion Skinning — Vorherige/nächste Frames halbtransparent anzeigen
- Loop-Wiedergabe
- PNG Export — Einzelframe mit wählbarer Skalierung (1x–16x)
- Spritesheet — Alle Frames als Spritesheet-Atlas
- Animiertes GIF — Komplette Animation als GIF (eigener Encoder, keine Library)
- Projekt speichern/laden — JSON-Format, alle Frames + Ebenen + Palette
- Apple Pencil — Volle Pointer-Events-Unterstützung mit Druckempfindlichkeit
- Pinch-to-Zoom — Zwei-Finger-Zoom auf Touch-Geräten
- Responsive UI — Angepasst für iPad-Bildschirmgrößen
- Kein ungewolltes Scrolling oder Zooming des Browsers
- Undo/Redo — 50 Schritte History
- Zoom — 1x bis 32x, Mausrad oder Pinch
- Pixel-Grid — Ein-/ausschaltbar, automatisch ab 4x Zoom
- Live-Vorschau — Schwebendes Vorschau-Fenster mit skalierbarer Ansicht
- Canvas-Größen — 16×16, 32×32, 64×64, 128×128 oder frei wählbar (bis 512×512)
- Tastaturkürzel — Vollständige Shortcut-Unterstützung
# Repository klonen
git clone https://github.com/DEIN-USERNAME/pixel-character-creator-2d.git
cd pixel-character-creator-2d
# Container starten
docker compose up -d
# Öffne http://localhost:8080docker compose downdocker compose up -d --build- Gleiche Netzwerk: iPad und Server müssen im selben WLAN sein
- IP-Adresse finden: Auf dem Server
hostname -Iausführen - Safari öffnen:
http://<SERVER-IP>:8080eingeben - Zum Home-Screen hinzufügen: Teilen → "Zum Home-Bildschirm" für App-Feeling
Tipp: Die App unterstützt
apple-mobile-web-app-capable— als Web-App auf dem Home-Screen läuft sie im Vollbild ohne Safari-UI.
| Taste | Aktion |
|---|---|
B |
Stift (Brush) |
E |
Radierer |
G |
Fülleimer |
L |
Linie |
R |
Rechteck |
C |
Kreis |
S |
Auswahl |
V |
Verschieben |
I |
Pipette |
M |
Spiegel-Modus |
X |
Primär-/Sekundärfarbe tauschen |
[ / ] |
Brush-Größe kleiner/größer |
Ctrl+Z |
Rückgängig |
Ctrl+Shift+Z |
Wiederholen |
Siehe ARCHITECTURE.md für die vollständige technische Dokumentation.
pixel-character-creator-2d/
├── Dockerfile # Nginx Alpine Container
├── docker-compose.yml # Container-Orchestrierung
├── nginx.conf # Webserver-Konfiguration
├── LICENSE # MIT License
├── README.md # Diese Datei
├── CONTRIBUTING.md # Beitragsrichtlinien
├── CHANGELOG.md # Versionshistorie
├── docs/
│ └── ARCHITECTURE.md # Technische Architektur
└── src/ # Website-Dateien
├── index.html # Haupt-HTML mit vollständiger UI
├── css/
│ └── style.css # Responsive Styling, Dark Theme
└── js/
├── utils.js # Hilfsfunktionen (Bresenham, FloodFill, Farbkonvertierung)
├── history.js # Undo/Redo-System (Snapshot-basiert)
├── layer.js # Ebenen-Management (CRUD, Compositing)
├── drawing.js # Zeichen-Engine (Pointer Events, Brush, Shapes)
├── tools.js # Werkzeug-Definitionen & Shortcuts
├── animation.js # Frame-System (Timeline, Onion Skinning)
├── export.js # Export (PNG, Spritesheet, GIF-Encoder, Projekt-IO)
├── ui.js # UI-Rendering (Canvas, Panels, Overlays)
└── app.js # Haupt-App (State, Event-Binding, Init)
| Komponente | Technologie |
|---|---|
| Frontend | Vanilla JavaScript (ES5-kompatibel), HTML5 Canvas, CSS3 |
| Backend | Nginx Alpine (nur statische Dateien) |
| Container | Docker + Docker Compose |
| Abhängigkeiten | Keine — Zero Dependencies |
- Keine Dependencies — Kein npm, kein Webpack, kein Framework
- Self-Contained — Alles in einem Docker-Container
- Pixel-Perfect —
image-rendering: pixelatedüberall - Touch-First — Pointer Events API für Stylus + Touch + Maus
- Performant —
requestAnimationFrame, minimale DOM-Updates - Privacy — Alles lokal, keine externen Requests
- Klicke auf ☰ Menü → Neu erstellen
- Wähle eine Vorlage oder gib eine eigene Größe ein
- Klicke Erstellen
- Wähle den Stift ✏️ (oder drücke
B) - Wähle eine Farbe aus der Palette oder dem Color-Picker
- Zeichne auf dem Canvas — jeder Pixel zählt!
- Nutze den Spiegel-Modus 🪞 (
M) für symmetrische Charaktere - Füge Ebenen hinzu für separate Körperteile (z.B. Kopf, Körper, Waffe)
- Zeichne den ersten Frame deines Charakters
- Klicke + Frame in der Timeline
- Aktiviere Onion Skinning 🧅 um den vorherigen Frame durchscheinen zu sehen
- Zeichne die nächste Pose
- Klicke ▶ Play und stelle die FPS ein
- Exportiere als GIF oder Spritesheet
- Einzelbild: Export-Button → Skalierung wählen → Herunterladen
- Spritesheet: ☰ Menü → Spritesheet exportieren
- Animation: ☰ Menü → Als GIF exportieren
- Projekt sichern: ☰ Menü → Projekt speichern (JSON)
In docker-compose.yml:
ports:
- "3000:80" # Statt 8080 nun Port 3000Für HTTPS empfehlen wir einen Reverse-Proxy wie Traefik oder Caddy vor dem Container.
Die App benötigt nur einen statischen Webserver:
# Mit Python
cd src && python3 -m http.server 8080
# Mit PHP
cd src && php -S localhost:8080Beiträge sind willkommen! Siehe CONTRIBUTING.md für Details.
# Fork & Clone
git clone https://github.com/DEIN-USERNAME/pixel-character-creator-2d.git
cd pixel-character-creator-2d
# Starten
docker compose up -d
# Änderungen machen...
# Neu bauen
docker compose up -d --build
# PR erstellen - Touch-Gesten für Ebenen-Neuordnung (Drag & Drop)
- Benutzerdefinierte Paletten importieren/exportieren (
.gpl,.ase) - Tilemap-Editor-Modus
- Skelett-Animation (Bone-basiert)
- Kollaboratives Zeichnen (WebSocket)
- PWA mit Offline-Support
- Pixel-Art-spezifische Filter (Outline, Shadow, Dithering)
- Referenzbild-Overlay
- Animationsvorschau im Spritesheet-Format
Dieses Projekt ist unter der MIT License lizenziert — frei für private und kommerzielle Nutzung.
- Inspiriert von Tools wie Aseprite, Piskel und Lospec
- GIF89a-Encoder basiert auf der GIF-Spezifikation
- Bresenham-Algorithmen nach Wikipedia
Erstellt mit ❤️ für die Pixel-Art-Community