home / skills / partme-ai / full-stack-skills / ascii-image-to-ascii

ascii-image-to-ascii skill

/skills/ascii-image-to-ascii

This skill converts a local image into ASCII art with readable and detail variants, offering width, charset, and optional ANSI for previews.

npx playbooks add skill partme-ai/full-stack-skills --skill ascii-image-to-ascii

Review the files below or copy the command above to add this skill to your agents.

Files (4)
SKILL.md
2.6 KB
---
name: ascii-image-to-ascii
description: Convert an image into ASCII art (readable + detail variants, width/charset controls, optional ANSI), for terminal previews and plain-text “image substitutes”.
license: Complete terms in LICENSE.txt
dependencies:
  - python>=3.8
  - pillow
---


## When to use this skill
**CRITICAL TRIGGER RULE**
- Use this skill ONLY when the user explicitly mentions the exact skill name: `ascii-image-to-ascii`.

**Trigger phrases include:**
- "ascii-image-to-ascii"
- "use ascii-image-to-ascii"
- "用 ascii-image-to-ascii 把图片转字符画"
- "使用 ascii-image-to-ascii 生成可读优先/细节优先两版"

## Boundary
- Default output is ASCII-only; ANSI coloring is optional.
- The bundled script is for local conversion/verification only. Do not fetch/upload images on the user’s behalf.
- Always give pre-processing advice (crop subject, raise contrast, simplify background) before generating the final ASCII art.

## How to use this skill
### Inputs
- imagePath (local path, required)
- width (default 100; common: 80/100/120)
- charset (default ` .:-=+*#%@`, from light to dark)
- mode (readable | detail; if outputting both, this can be ignored)
- background (light | dark | unknown, default unknown)
- colorMode (none | ansi256, default none)

### Outputs (required)
- asciiReadable: readable-first (less noise, clearer silhouette)
- asciiDetail: detail-first (more levels, richer texture)
- paramsGuide: recommended width/charset + pre-processing tips
- pitfalls: 3-5 common failure modes with fixes

### Steps
1. Pre-processing advice (required):
   - Crop the subject, remove irrelevant background
   - Increase contrast to reduce gradient noise
   - Target width usually 80–120 columns
2. Charset + mapping direction:
   - Space is the lightest, `@` is the darkest (or invert consistently)
3. Generate two variants:
   - readable: fewer levels (less noise)
   - detail: more levels (more texture)
4. Optional ANSI:
   - Use color only as a hint; keep the silhouette readable
   - Always provide a no-color fallback

## Script
- `scripts/image_to_ascii.py`
  - Requires Python + Pillow (`pip install pillow`)
  - Supports: readable/detail variants, optional `--ansi256`

## Examples
- `examples/readable-vs-detail.md`

## Quality checklist
1. Lines are consistent and `<= width`
2. The readable variant must preserve the main silhouette
3. No trailing spaces (copy/paste safe)

## Keywords
**English:** ascii-image-to-ascii, image to ascii, ascii art, terminal preview, charset, grayscale, dithering, ansi
**中文:** ascii-image-to-ascii, 图片转字符画, ASCII 字符画, 终端预览, 字符集, 灰度映射, 降噪, ANSI 彩色

Overview

This skill converts a local image file into two ASCII-art variants: a readable-first silhouette-preserving version and a detail-first texture-rich version. It supports width and charset controls and optional ANSI256 coloring while always providing a no-color fallback. The tool is intended for local use and includes preprocessing guidance to improve results.

How this skill works

The script loads a local image, applies optional preprocessing (crop, contrast), resizes to the target column width while preserving aspect ratio, and maps image luminance to a configurable character set. It produces two outputs: asciiReadable (fewer levels to keep silhouettes clear) and asciiDetail (more levels for texture). ANSI256 coloring can be added as a hint but a plain-ASCII fallback is always generated.

When to use it

  • When you explicitly invoke ascii-image-to-ascii by name
  • To create terminal previews or plain-text substitutes for images
  • When you need both a silhouette-focused and a texture-focused ASCII version
  • When distributing ASCII art that must be copy/paste safe and terminal-friendly
  • To test visual results locally without uploading images

Best practices

  • Preprocess: crop to the subject, increase contrast, and simplify the background before conversion
  • Choose width 80–120 columns; common defaults are 80, 100, 120
  • Select charset from light-to-dark (default: " .:-=+*#%@"); use fewer levels for readable variant and more for detail variant
  • Verify lines are <= width and remove trailing spaces for safe copy/paste
  • If using ANSI coloring, treat color as a hint; always keep a plain-ASCII fallback

Example use cases

  • Generate a readable preview of a product photo for terminal display
  • Create a detail-rich ASCII texture version for artistic text UIs
  • Produce copy/paste-friendly ASCII placeholders for text-only environments
  • Compare silhouette vs. texture output when refining preprocessing steps
  • Embed ASCII art into README or terminal dashboards with optional ANSI color

FAQ

Does the skill fetch or upload images for me?

No. The script requires a local imagePath; it does not fetch or upload images on your behalf.

What inputs should I provide?

Provide imagePath, optional width (default 100), charset (default " .:-=+*#%@"), mode (readable or detail), background hint, and colorMode (none or ansi256).

How do I improve noisy output?

Crop tightly to the subject, increase contrast, simplify the background, and reduce width or use a smaller charset for the readable variant.