在线工具箱
ASCII 字符画生成器

在线 ASCII 字符画生成器

将图片按亮度映射为字符,输出可复制的文本艺术画。

隐私安全:所有处理均在您的浏览器本地完成,数据绝不上传
字符画图片处理图片

1. 上传图片

图片不会上传,全部在本地处理

2. 参数设置

80

建议 ≥ 60 列;列数过小画面会严重失真。

0
0
1.00
12px

3. 预览

请先上传图片,或点击上方「载入示例图」体验。

4. 复制 / 导出

TXT 带 UTF-8 BOM,便于在记事本中查看;HTML 保留彩色字符并合并连续同色字符;PNG 由浏览器本地 Canvas 绘制生成。所有文件均在本地生成,不会上传。

工作原理

  1. 1图片经浏览器本地解码后,先等比缩小到最长边不超过 2000px,再绘制到离屏 Canvas 并一次性读取 ImageData,避免逐像素遍历。
  2. 2按目标列数把图像划分为网格,每一格在原图对应区域内步进取样求平均色(含 alpha 合成到背景色),单格采样数设上限以保证大图也快速完成。
  3. 3亮度采用 sRGB 相对亮度 0.2126R + 0.7152G + 0.0722B,依次经过亮度、对比度、Gamma、反色处理后,映射为字符表下标 idx = round(luma × (chars.length − 1))。
  4. 4网格行数按 rows = round(原图高 / 原图宽 × 列数 × 字符宽高比) 自动换算(宽高比默认 0.5),因此改变列数时纵向比例始终保持正确。
  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 记事本能正确识别中文与符号;同时请使用等宽字体查看,字符画才能保持对齐。

更多在线工具