Community影像github.com

devgabrielmarcondes/draw-anything

用數學繪製或精確複製任何圖像。支援貝茲曲線、傅立葉級數(本輪)、符號距離函數(SDF)、隱含/參數/極座標方程式、Tupper 公式等方法。產出適用於社群媒體與影片編輯器的圖片與動畫,以及 Desmos 方程式或 GLSL。

draw-anything 是什麼?

這個技能可將任意繪圖、複製或動畫請求轉化為數學驅動的視覺輸出。它支援多種方法:使用貝茲曲線(透過 Potrace)和傅立葉級數本輪動畫來精確複製影像;使用符號距離函數(SDF)創作填充形狀;使用隱含、參數或極座標方程式繪製曲線和區域;以及使用 Tupper 公式產生像素藝術。它專為內容創作者和影片剪輯師設計,能產出適用於 Instagram Reels、TikTok、YouTube Shorts 的 .mp4 檔案,以及用於 Premiere、DaVinci、After Effects 等軟體的透明 .mov 或 .webm 疊加影片。此外,它還能輸出 Desmos 格式的方程式和 GLSL 著色器程式碼,讓數學藝術既美觀又便於分享。這個技能有明確的版權限制:只處理原創作品、用戶自有的藝術品、標誌和公共領域素材,避免未經授權複製受版權保護的角色或商標。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/devgabrielmarcondes/draw-anything/tree/HEAD/skills/draw-anything

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

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

畫出任何東西

將請求轉換為數學繪圖,並附上對應的數學內容。使用者通常是內容創作者和影片剪輯師。請以正確格式提供檔案,並用簡單的語言解釋方法。

程序

  1. 找出主題、目標平台(Reels、貼文、YouTube、影片疊加)、靜態或動畫,以及顏色。如果資料遺漏,使用預設值(正方形、深色主題)。告知使用者預設值。不要問太多問題。
  2. 選擇方法(下表)。如果使用者明確指定了方法,則使用該方法。
  3. 如果使用者提供圖片,使用 trace_image.py 複製它。複製比重新繪製更精確。
  4. 如果沒有圖片,自行建構幾何形狀(參閱「無需圖片繪製」)。
  5. 製作快速預覽(540 px,少數影格)。使用圖片檢視器查看。修正比例、構圖和顏色。重複此步驟直到結果令人滿意。
  6. 以要求的尺寸產出最終檔案。
  7. 將檔案放入輸出資料夾並呈現。給出簡短回覆:方法、主要參數,以及一個準備好的說明文字。

方法選擇

請求方法腳本
複製圖片(繪圖、標誌、文字、剪影、插圖、照片)貝茲(Potrace),用於動畫的逐輪廓傅立葉trace_image.py
名稱、簽名、新輪廓、「由圓圈繪製」傅立葉fourier_draw.py
填充形狀:圖示、吉祥物、標誌、場景、圖案、曼陀羅SDFsdf.py(函式庫)
方程式作為主體、著名曲線、填充區域隱含curves.py
螺旋、玫瑰線、利薩如、曲線板參數/極座標curves.py
像素藝術、「繪製自身的公式」Tuppertupper.py
碎形、植物、流場其他自行編寫程式碼(references/methods.md §7)

傅立葉無法精確複製尖角(吉布斯現象)。若要精確複製,請使用貝茲。傅立葉用於動畫。

腳本

所有腳本都位於 scripts/。使用 --help 執行腳本以查看所有選項。常見選項: --size(reels, post, square, youtube, thumb, 4k 或 WxH),--theme(dark, light, neon, blueprint, paper),--transparent。 依賴項:numpy, matplotlib, Pillow, imageio/ffmpeg, OpenCV, scikit-image, potracer(腳本會自動使用 pip 安裝,如果缺失的話)。

複製圖片:

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      # 可編輯的筆觸
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(預設):線稿、標誌、文字、剪影、螢幕截圖。它會自動偵測亮底暗字圖像並移除黑色邊框。
  • --mode color --colors N:插圖、印刷品、畫作、圖示、照片。對於藝術作品和照片,使用 12–16 種顏色。添加 --lines 以用於印刷品、漫畫和墨水藝術:它會為細的深色輪廓和小的亮色細節(泡沫、星星、高光)添加上層。--detail 1 保留更多小細節。
  • --mode edges:將照片轉換為線條畫。
  • --centerline:用於線稿、素描、手寫和簽名。每個筆觸成為一條可編輯的 SVG 路徑,並帶有其筆觸寬度(如同 Illustrator/Figma/Inkscape 中的畫筆線條)。連接點、交叉處和尖角會被修復,直線部分變成精確的線條,筆觸末端(圓頭/平頭)會根據墨跡自動識別。可使用 --cap 和 --join 覆蓋。若不含 --centerline,SVG 將產生填充輪廓(最適合標誌、文字、剪影)。
  • --anim-style pen 繪製貝茲曲線,然後顯示填充。--anim-style fourier 對每個輪廓或筆觸使用一條本輪鏈。在色彩模式下,本輪繪製最長的區域輪廓(--max-strokes,預設 800),然後色彩向量淡入。
  • --keep-colors 保留原始顏色(墨水模式)。--detail N 忽略小斑點。--smooth 0 保留尖角。
  • 腳本會輸出精確度(IoU)和以像素為單位的邊緣偏差。對於筆觸,邊緣偏差是更好的指標:平均值低於約 0.8 px 表示非常精確的複製。
  • 腳本會輸出精確度。良好數值:剪影和標誌超過 95%,細輪廓 88–92%,--centerline 模式 80–88%(每個筆觸只有一種寬度)。邊緣像素會降低 IoU。在邊緣模式下,該數值沒有參考價值。如果數值偏低,請檢查複製結果並調整 --threshold 或 --detail。
  • 在製作動畫之前,將複製結果與原始圖片並排顯示。

**傅立葉:**每個獨立的輪廓都會獲得自己的級數,因此各部分之間不會有連線。--single-line 會產生「一筆畫」風格。

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

輸入:--svg-path、--svg-file、--text、--points(JSON)。輸出:--png(--fill)、--anim、--svg、--desmos(t 從 0 到 1)、--json。

**SDF:**在簡短腳本中將其作為函式庫匯入。

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")

sdf.py 的文件字串中列出了基本幾何形狀、運算和圖層選項。動畫:animate(lambda t: [layers], "out.mp4", frames=120)。如需 Shadertoy/GLSL,請閱讀 references/glsl.md。

**曲線:**變數 a 在動畫期間從 0 變化到 1。使用 ::#hex 設定顏色。

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 "HELLO" --png tupper.png --out k.txt
python scripts/tupper.py encode --ascii drawing.txt --png art.png --out k.txt   # '#' 和 '.'
python scripts/tupper.py classic --png formula.png

編碼功能會使用真實公式進行自我驗證。將完整的 k 值存放在 .txt 檔案中。

影片編輯器的輸出格式

  • 社群媒體:.mp4(H.264)。Slack、電子郵件、README:.gif(最大 540 px)。
  • 影片疊加:使用 --transparent 搭配 .mov(ProRes 4444 含 Alpha 通道)、.webm(VP9 含 Alpha 通道)或資料夾名稱(PNG 序列)。Premiere、DaVinci、After Effects 和 Final Cut 都接受 .mov。如果剪輯軟體不接受 Alpha 影片,請使用 PNG 序列。
  • 如果動畫僅在 sin/cos(2π·a) 中使用 a,則迴圈是無縫的。
  • 更多技巧(安全區域、時長、系列想法),請閱讀 references/creator-playbook.md。

無需圖片繪製

  • 將主體分解為 3 到 8 個簡單形狀(貓 = 橢圓 + 2 個三角形 + 圓形)。
  • 對稱主體使用 mirror_x。
  • 對於傅立葉,在 0–200 的盒狀區域內使用 C 曲線撰寫封閉的 SVG 路徑。
  • 對於 Tupper,使用 ASCII 繪製點陣圖(最多 17 行,106 列)。
  • 確保一個人在每次預覽中都能立即識別出主體。

限制

繪製原創設計、使用者自己的藝術品和標誌、通用形狀和公共領域作品。請勿複製或描摹屬於他人的角色、吉祥物、標誌或藝術品,即使使用者提供了圖片。也請勿製作它們的「相似」版本。應提供原創設計。只有當使用者擁有照片或獲得許可時,才能複製真實人物的照片。

回覆

保持回覆簡短:你畫了什麼、方法和原因(一句話)、主要參數(項數、方程式、簡短的 k 值)以及一個準備好的說明文字。用一行提供一個有用的變體建議。

相關技能