CommunityBildgithub.com

devgabrielmarcondes/draw-anything

Zeichnet oder kopiert jedes Bild mit Mathematik. Methoden sind Bézier-Vektorisierung, Fourier-Reihen (Epizyklen), SDF, implizite/parametrische/polare Gleichungen, Tuppers Formel und andere. Liefert Bilder und Animationen für soziale Medien und Videobearbeitung sowie Desmos-Gleichungen oder GLSL.

Was ist draw-anything?

Diese Fähigkeit ermöglicht es einem KI-Agenten, jedes gegebene Bild oder jede Beschreibung in eine mathematische Darstellung zu verwandeln – sei es als Vektorgrafik, animierte Epizyklen, SDF-Logo oder als Gleichung für Desmos. Sie unterstützt verschiedene Ausgabeformate wie MP4, GIF, transparentes MOV/WEBM und PNG-Sequenzen, die für Plattformen wie Instagram Reels, TikTok, YouTube und Videobearbeitungsprogramme optimiert sind. Die Auswahl der Methode erfolgt automatisch anhand der Benutzeranfrage: Für exakte Kopien wird Bézier (Potrace) verwendet, für Animationen Fourier, für gefüllte Formen SDF und für Gleichungen implizite/polare Kurven oder Tuppers Formel. Der Agent führt eine schnelle Vorschau durch, passt Proportionen und Farben an und liefert dann die finalen Dateien sowie eine kurze Erklärung der Methode und Parameter. Die Fähigkeit ist für Claude Code, Cursor, Codex und ähnliche Entwicklerwerkzeuge konzipiert und erfordert Python mit numpy, matplotlib, Pillow, imageio/ffmpeg, OpenCV und scikit-image als Abhängigkeiten. Sie respektiert Urheberrechte und zeichnet nur eigene Designs oder mit Erlaubnis gegebene Bilder.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/devgabrielmarcondes/draw-anything/tree/HEAD/skills/draw-anything

Installed? Explore more Bild skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Zeichne Alles

Verwandle eine Anfrage in eine mathematische Zeichnung und liefere die Mathematik dazu mit. Die Nutzer sind oft Content-Ersteller und Videobearbeiter. Gib Dateien im richtigen Format aus und erkläre die Methode in einfachen Worten.

Vorgehen

  1. Finde das Motiv, das Ziel (Reels, Post, YouTube, Video-Overlay), statisch oder animiert, und die Farben. Wenn Daten fehlen, verwende Standardwerte (quadratisch, dunkles Design). Teile dem Benutzer die Standardwerte mit. Stelle nicht viele Fragen.
  2. Wähle die Methode (Tabelle unten). Wenn der Benutzer eine Methode nennt, verwende sie.
  3. Wenn der Benutzer ein Bild angibt, kopiere es mit trace_image.py. Eine Kopie ist genauer als eine neue Zeichnung.
  4. Wenn kein Bild vorhanden ist, erzeuge die Geometrie selbst (siehe „Ohne Bild zeichnen").
  5. Erstelle eine schnelle Vorschau (540 px, wenige Frames). Betrachte sie mit dem Bildbetrachter. Korrigiere Proportionen, Bildausschnitt und Farben. Wiederhole dies, bis das Ergebnis gut ist.
  6. Erstelle die endgültige Datei in der gewünschten Größe.
  7. Lege die Dateien im Ausgabeordner ab und präsentiere sie. Gib eine kurze Antwort: Methode, Hauptparameter und eine fertige Bildunterschrift.

Methodenauswahl

AnfrageMethodeSkript
Bild kopieren (Zeichnung, Logo, Beschriftung, Silhouette, Illustration, Foto)Bézier (Potrace), Fourier pro Kontur für Animationtrace_image.py
Name, Unterschrift, neuer Umriss, „von Kreisen gezeichnet"Fourierfourier_draw.py
Gefüllte Formen: Icon, Maskottchen, Logo, Szene, Muster, MandalaSDFsdf.py (Bibliothek)
Gleichung als Motiv, berühmte Kurve, gefüllter BereichImplizitcurves.py
Spirale, Rose, Lissajous, SpirographParametrisch/polarcurves.py
Pixel-Art, „Formel, die sich selbst zeichnet"Tuppertupper.py
Fraktal, Pflanze, StrömungsfeldAndereeigener Code (references/methods.md §7)

Fourier allein kann scharfe Ecken nicht exakt kopieren (Gibbs-Effekt). Verwende Bézier für eine exakte Kopie und Fourier für die Animation.

Skripte

Alle Skripte befinden sich in scripts/. Führe ein Skript mit --help aus, um alle Optionen zu sehen. Übliche Optionen: --size (reels, post, square, youtube, thumb, 4k oder WxH), --theme (dark, light, neon, blueprint, paper), --transparent. Abhängigkeiten: numpy, matplotlib, Pillow, imageio/ffmpeg, OpenCV, scikit-image, potracer (das Skript installiert es bei Bedarf mit pip).

Ein Bild kopieren:

python scripts/trace_image.py drawing.jpg --svg d.svg --png d.png --desmos d.txt
python scripts/trace_image.py drawing.jpg --anim d.mp4 --anim-style fourier --centerline --size reels
python scripts/trace_image.py sketch.png --centerline --svg sketch.svg      # bearbeitbare Striche
python scripts/trace_image.py logo.png --mode color --colors 5 --svg logo.svg
python scripts/trace_image.py photo.jpg --mode edges --anim lines.mp4
  • --mode ink (Standard): Strichzeichnungen, Logos, Beschriftungen, Silhouetten, Screenshots. Es erkennt helle Bilder auf dunklem Hintergrund und entfernt schwarze Balken.
  • --mode color --colors N: Illustrationen, Drucke, Gemälde, Icons, Fotos. Verwende 12–16 Farben für Kunstwerke und Fotos. Füge --lines für Drucke, Comics und Tuschekunst hinzu: es fügt obere Ebenen für die dünnen dunklen Umrisse und die kleinen hellen Details (Schaum, Sterne, Glanzlichter) hinzu. --detail 1 behält mehr kleine Details.
  • --mode edges: wandelt ein Foto in eine Strichzeichnung um.
  • --centerline: für Strichzeichnungen, Skizzen, Handschriften und Unterschriften. Jeder Strich wird zu einem bearbeitbaren SVG-Pfad mit seiner Strichbreite (als Stiftlinie in Illustrator/Figma/Inkscape). Verbindungen, Kreuzungen und scharfe Ecken werden repariert, gerade Teile werden zu exakten Linien, und die Strichabschlüsse (rund/quadratisch) werden aus der Tinte ermitteln. Überschreibe mit --cap und --join. Ohne --centerline hat das SVG gefüllte Umrisse (am besten für Logos, Beschriftungen, Silhouetten).
  • --anim-style pen zeichnet die Bézier-Kurven und zeigt dann die Füllung. --anim-style fourier verwendet eine Epizyklenkette pro Kontur oder Strich. Im Farbmodus zeichnen die Epizyklen die längsten Regionenumrisse (--max-strokes, Standard 800) und dann blenden die Farbvektoren ein.
  • --keep-colors behält die Originalfarben (Tintenmodus). --detail N ignoriert kleine Punkte. --smooth 0 behält scharfe Ecken.
  • Das Skript gibt die Genauigkeit (IoU) und die Kantenabweichung in Pixeln aus. Bei Strichen ist die Kantenabweichung der bessere Wert: ein Mittelwert unter ~0,8 px ist eine sehr genaue Kopie.
  • Das Skript gibt die Genauigkeit aus. Gute Werte: mehr als 95% für Silhouetten und Logos, 88–92% für dünne Umrisse, 80–88% für --centerline (jeder Strich hat eine Breite). Randpixel verringern den IoU. Im Kantenmodus ist der Wert nicht aussagekräftig. Wenn der Wert niedrig ist, betrachte die Kopie und passe --threshold oder --detail an.
  • Zeige die Kopie neben dem Original, bevor du die Animation erstellst.

Fourier: Jede separate Kontur erhält ihre eigene Reihe, sodass keine Linien die Teile verbinden. --single-line ergibt den Stil „ein Stiftstrich".

python scripts/fourier_draw.py --text "Ana" --terms 300 --anim ana.mp4 --size reels --png ana.png
python scripts/fourier_draw.py --svg-path "M100 30 C 160 -20 220 60 100 170 C -20 60 40 -20 100 30 Z" \
       --terms 40 --png heart.png --desmos heart.txt

Eingaben: --svg-path, --svg-file, --text, --points (JSON). Ausgaben: --png (--fill), --anim, --svg, --desmos (t von 0 bis 1), --json.

SDF: Importiere es als Bibliothek in einem kurzen Skript.

import sys; sys.path.insert(0, "<skill-folder>/scripts")
from sdf import *
P = grid("square", scale=1.2)
body = ellipse(P, 0.6, 0.45)
ears = triangle(mirror_x(P), (0.15, 0.25), (0.5, 0.15), (0.45, 0.72))
cat = smooth_union(body, ears, 0.06)
eyes = circle(translate(mirror_x(P), 0.22, 0.05), 0.07)
render([(cat, "#2b2d42", {"shadow": (0.02, -0.03, 0.05)}), (eyes, "#ffd23f")], "cat.png", theme="paper")

Der Docstring von sdf.py listet die Grundelemente, Operationen und Ebenenoptionen auf. Animation: animate(lambda t: [layers], "out.mp4", frames=120). Für Shadertoy/GLSL lies references/glsl.md.

Kurven: Die Variable a läuft während der Animation von 0 bis 1. Verwende ::#hex, um eine Farbe festzulegen.

python scripts/curves.py --region "(x**2+y**2-1)**3 - x**2*y**3::#e63946" \
       --range -1.6,1.6,-1.3,1.5 --caption '$(x^2+y^2-1)^3 = x^2y^3$' --png heart.png
python scripts/curves.py --polar "1+0.3*cos(7*th+6.283*a)" --anim flower.mp4 --size reels

Tupper:

python scripts/tupper.py encode --text "HALLO" --png tupper.png --out k.txt
python scripts/tupper.py encode --ascii drawing.txt --png art.png --out k.txt   # '#' und '.'
python scripts/tupper.py classic --png formula.png

Die Kodierung überprüft sich selbst mit der echten Formel. Gib das vollständige k in der .txt-Datei an.

Ausgabe für Videobearbeiter

  • Soziale Medien: .mp4 (H.264). Slack, E-Mail, README: .gif (maximal 540 px).
  • Überlagerung von Filmmaterial: verwende --transparent mit .mov (ProRes 4444 mit Alphakanal), .webm (VP9 mit Alphakanal) oder einem Ordnernamen (PNG-Sequenz). Premiere, DaVinci, After Effects und Final Cut akzeptieren das .mov. Wenn ein Editor kein Alphavideo akzeptiert, verwende die PNG-Sequenz.
  • Eine Schleife ist nahtlos, wenn die Animation a nur in sin/cos(2π·a) verwendet.
  • Für weitere Tipps (Sicherheitsbereiche, Dauern, Serienideen) lies references/creator-playbook.md.

Ohne Bild zeichnen

  • Teile das Motiv in 3 bis 8 einfache Formen auf (Katze = Ellipse + 2 Dreiecke + Kreise).
  • Verwende mirror_x für symmetrische Motive.
  • Für Fourier schreibe einen geschlossenen SVG-Pfad in einem 0–200 Kasten mit C-Kurven.
  • Für Tupper zeichne die Bitmap als ASCII (maximal 17 Zeilen, 106 Spalten).
  • Stelle sicher, dass eine Person das Motiv in jeder Vorschau sofort erkennen kann.

Grenzen

Zeichne originelle Designs, die eigene Kunst und Logos des Benutzers, generische Formen und gemeinfreie Werke. Kopiere oder zeichne keine Charaktere, Maskottchen, Logos oder Kunstwerke, die anderen Personen gehören, auch wenn der Benutzer das Bild bereitstellt. Erstelle keine „ähnlichen" Versionen davon. Biete ein originelles Design an. Kopiere Fotos von echten Personen nur, wenn der Benutzer das Foto besitzt oder die Erlaubnis hat.

Antwort

Halte die Antwort kurz: Was du gezeichnet hast, die Methode und warum (ein Satz), die Hauptparameter (Begriffe, Gleichung, kurzes k) und eine fertige Bildunterschrift. Biete eine nützliche Variation in einer Zeile an.

Verwandte Skills