mcpField
A
ascii-art

ascii-art

github.com/neethanwu创意与媒体24201 次安装34 周前更新
代码仓库

关于 ascii-art

ascii-art 是将图像、视频和文本转换为 ASCII 风格作品的技能,提供多种渲染样式、颜色和导出格式;图像与视频还可生成交互式输出。

主要功能

  1. 01转换图像、视频和文本
  2. 02多种 ASCII 渲染样式
  3. 03颜色与背景选项
  4. 04导出为图像、文本和网页格式
  5. 05交互式与 React TSX 导出

适用场景

  1. 01将纯文本制作成文字横幅
  2. 02按指定样式转换照片
  3. 03将视频作品导出为 GIF
  4. 04根据图像生成交互式作品

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/neethanwu/ascii-art --skill ascii-art

安装后在 Claude Code 中输入/ascii-art确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
.gitignore
README.md
scripts/
convert.py
setup.sh
save_image.py
scripts/core/
exporters.py
colors.py
dither.py
__init__.py
interactive_exporter.py
pipeline.py
react_exporter.py
text_render.py
styles.py
video_extract.py
scripts/core/interactive/
animations.js
react_template.tsx
renderer.js
tests/
__init__.py
test_colors.py
test_dither.py
test_styles.py
test_exporters.py
test_integration.py
test_pipeline.py

详细介绍

ASCII 艺术转换器

设置

首次使用前,请运行环境设置(可重复执行;首次运行后耗时不到 1 秒):

bash {{SKILL_DIR}}/scripts/setup.sh

输入检测

  1. 文件路径 → 检查扩展名:.jpg/.jpeg/.png/.webp/.bmp/.tiff → 图像,.mp4/.webm/.avi/.mov/.mkv → 视频,.gif → 检查是否为动画(视频)或静态图像(图像)
  2. 粘贴/附加的图像 → 在进行任何其他操作前,立即保存。运行:
    {{SKILL_DIR}}/scripts/.venv/bin/python {{SKILL_DIR}}/scripts/save_image.py --clipboard
    
    这会从系统剪贴板(粘贴后图像仍保留在其中)获取图像,将其保存到 ascii/tmp/ 并使用带时间戳的名称,然后将保存路径打印到 stdout。将该输出路径用作 --input。 如果 --clipboard 失败(剪贴板中没有图像),则改为询问:“请提供文件路径(例如 ~/Downloads/photo.jpg)。”你也可以直接传入已知文件路径:save_image.py <path>。 在磁盘上获得有效文件路径之前,请勿继续询问选项。
  3. 纯文本(没有文件,或文件不存在)→ 文本(FIGlet 横幅)
  4. 未提供任何内容 → 询问他们想转换什么

选项提示

解析用户消息,识别预先指定的选项。然后使用 AskUserQuestion 询问未指定的选项。

  • “defaults” 或 “just do it” → 跳过提问,使用所有默认值
  • “random” 或 “surprise me” → 跳过提问,使用 --random
  • 已指定所有选项 → 跳过提问

使用 questions 数组(每次最多 4 个问题,每个问题 3 个选项)。在 question 文本中列出所有选项及其编号。将前 3 个设为可选项——用户也可以在自由文本中输入任意编号/名称。不要提供“其他”选项。将默认值设为选项 1。

图像/视频——分两轮提问:

  1. 第 1 轮(4 个问题):样式 → 颜色 → 导出 → 背景
  2. 第 2 轮(仅当导出格式为 interactive 或 tsx 时):鼠标模式 → 动画

文本:字体 → 颜色 → 导出 → 背景(单轮)。

图像/视频选项
选项选择默认值
样式classic、braille、block、edge、dot-cross、halftone、particles、retro-art、terminalclassic
颜色grayscale、original、matrix、amber、custom(十六进制/命名颜色)grayscale
比例original、16:9、4:3、1:1、3:4、9:16original
背景dark、light、transparentdark
抖动none、floyd-steinberg、bayer、atkinsonnone
字体大小6-30 px14
导出png、html、svg、txt、md、clipboard、interactive、tsxauto(图像→png,视频→gif)
鼠标模式push、attractpush
动画none、noise-field、intervals、beam-sweep、glitch、crtnone

鼠标模式和动画仅适用于 interactive/tsx 导出。只有导出格式为 interactive 或 tsx 时才询问。不要询问 --hover-strength、--area-size 或 --spread——使用默认值。

文本选项
选项选择默认值
字体standard、doom、banner、slant、big、small、block、lean、mini、script、shadow、speed、ansi_shadow、ansi_regularstandard
颜色grayscale、original、matrix、amber、customgrayscale
背景dark、light、transparentdark
导出terminal(stdout)、txt、md、png、html、svg、clipboardterminal

interactive/tsx 导出需要图像或视频输入——不支持文本。

消歧
  • 作为样式的“block” = 用于图像的 Unicode 块元素(█▓▒░)
  • 作为字体的“block” = 用于文本的块状字母 FIGlet 字体
  • 要生成块状文本艺术,请使用 --font ansi_shadow 或 --font block
  • 自定义颜色:十六进制(#ff6600)或命名颜色(coral、skyblue)。将创意描述转换为十六进制颜色值。

运行转换

{{SKILL_DIR}}/scripts/.venv/bin/python {{SKILL_DIR}}/scripts/convert.py \
  --input "<input>" \
  --type <text|image|video> \
  --style <style> \
  --color <color> \
  --background <background> \
  --export <format> \
  [--dither <algorithm>] \
  [--ratio <ratio>] \
  [--font-size <pixels>] \
  [--cols <number>] \
  [--font <font_name>] \
  [--custom-color "<hex>"] \
  [--mouse-mode <push|attract>] \
  [--animation <preset>] \
  [--invert] [--random] \
  [--fps <number>] \
  [--filename <custom_name>]

输出

所有文件都保存到当前工作目录下的 ascii/ 文件夹中(会自动创建)。

  • 文本(终端):打印到 stdout 并自动复制到剪贴板。以代码块形式显示。
  • 文件导出(png, html, svg, txt, md, gif):显示文件路径。使用 Read 工具以内嵌形式显示图像。
  • 交互式 HTML:显示文件路径。建议使用 open <path> 在浏览器中查看。
  • React TSX:显示文件路径。显示用法:import { AsciiArt } from './<filename>'
  • 切勿在终端中预览图像/视频/交互式导出。

错误处理

  • 视频处理失败:可能是缺少 ffmpeg 或 opencv。建议:pip install opencv-python-headless
  • 图像处理失败:检查文件是否存在且为有效图像格式
  • 交互式/tsx + 文本:会打印错误——交互式模式需要图像/视频输入

后续操作

显示结果后,可提供以下选项:尝试其他风格/颜色、调整设置、导出为其他格式或尝试随机模式。记住上次输入的路径,以便重新运行。

评论

支持 Markdown