在线 ASCII 字符画生成器
将图片按亮度映射为字符,输出可复制的文本艺术画。
隐私安全:所有处理均在您的浏览器本地完成,数据绝不上传字符画图片处理图片
1. 上传图片
图片不会上传,全部在本地处理2. 参数设置
80
建议 ≥ 60 列;列数过小画面会严重失真。
至少 2 个字符,顺序为「暗 → 亮」,可包含空格。
0
0
1.00
12px
3. 预览
请先上传图片,或点击上方「载入示例图」体验。
4. 复制 / 导出
TXT 带 UTF-8 BOM,便于在记事本中查看;HTML 保留彩色字符并合并连续同色字符;PNG 由浏览器本地 Canvas 绘制生成。所有文件均在本地生成,不会上传。
工作原理
- 1图片经浏览器本地解码后,先等比缩小到最长边不超过 2000px,再绘制到离屏 Canvas 并一次性读取 ImageData,避免逐像素遍历。
- 2按目标列数把图像划分为网格,每一格在原图对应区域内步进取样求平均色(含 alpha 合成到背景色),单格采样数设上限以保证大图也快速完成。
- 3亮度采用 sRGB 相对亮度 0.2126R + 0.7152G + 0.0722B,依次经过亮度、对比度、Gamma、反色处理后,映射为字符表下标 idx = round(luma × (chars.length − 1))。
- 4网格行数按 rows = round(原图高 / 原图宽 × 列数 × 字符宽高比) 自动换算(宽高比默认 0.5),因此改变列数时纵向比例始终保持正确。
- 5导出 TXT 时前置 UTF-8 BOM 以免 Windows 记事本乱码;导出 PNG 由 Canvas 的 fillText 逐字绘制后 toBlob 生成;导出 HTML 则把连续同色字符合并为最少的 span 节点。
常见问题
上传的图片会被发送到服务器吗?
不会。图片解码、像素采样、字符映射与全部导出都在你的浏览器本地完成,工具不发起任何网络请求,断网状态下同样可以正常使用。
为什么调整列数时行数会跟着变化?
为了保证画面不变形。等宽字体的字符高度约为宽度的 2 倍,因此行数按「原图高 / 原图宽 × 列数 × 0.5」自动换算,列数与行数始终保持与原图相同的长宽比例。
彩色模式和黑白模式有什么区别?
黑白模式用统一的前景色绘制所有字符,体积小、便于复制为纯文本;彩色模式按字符所在区域的原图平均色给字符上色,视觉更接近原图,主要用于 HTML 与 PNG 导出。
盲文点阵 / 方块字符显示成了方块或问号?
这是字体缺字所致。这些字符依赖系统字体中的对应字形,本工具已指定等宽字体族(如 Consolas、Menlo)以尽量命中字形;若你的系统缺失相应字形,字符可能显示为方块,但导出的文本内容仍然正确。
列数是不是越大越好?
不是。列数越大细节越丰富,但字符总量按「列 × 行」增长,文本文件也更大、生成更耗时。建议人像 / 照片使用 80~160 列,纯文本分享时 60~100 列即可;列数超过 300 时工具会提示生成可能需要一点时间。
导出的 TXT 在 Windows 记事本里会乱码吗?
不会。TXT 导出使用 UTF-8 编码并前置了 BOM 标记,Windows 记事本能正确识别中文与符号;同时请使用等宽字体查看,字符画才能保持对齐。