图片转 ASCII — 在浏览器中将图像转换为 ASCII 艺术
在浏览器中将图片转换为 ASCII 艺术。可调密度、等宽和比例字体,导出为文本或 PNG。无上传、无限制。
Drop an image here
or click to browse — converts to ASCII art
ASCII 艺术是计算机图形最古老的形式 —— 早于位图显示、早于网页、早于像素字体。它能成立是因为等宽字体让每个字符宽度相同,所以一个字符网格可以替代一个像素网格。从亮度到字符的映射是让艺术读得清楚的关键:源图像亮的地方用密实的字符(@、#、%),暗的地方用稀疏的字符(.、,、空格),中间走平滑的过渡。输出是一段文字,可以粘贴到代码注释、README、邮件,或任何接受纯文本但不接受图像的场景。
ASCII 艺术里「不那么显然」的一点是字符密度。不是所有 ASCII 字符占据相同的视觉面积 —— @ 比 * 密实,* 又比 . 密实。一个调校得当的字符梯度就是「艺术看着像源图」和「艺术看着像噪点」之间的差别。标准的 70 字符梯度($@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\\|()1{}[]?-_+~<>i!lI;:,"^\\'. )是终端艺术的事实标准,因为它覆盖了完整的亮度范围,相邻字符之间有平滑过渡。更短的梯度(5-10 字符)产生更块状、更像素化的艺术;更长的梯度或 Unicode 方块字符产生更平滑的渐变。
最终的交接:如果目的地是代码注释、GitHub 上的 README 或聊天消息,直接粘贴纯文本输出 —— 大多数代码块使用等宽字体,能正确渲染对齐。如果目的地是社交媒体或对等宽字体支持不好的文档,使用 PNG 导出 —— ASCII 用选定字体渲染后保存为图片,任何平台都能显示。如果目的地是打印页面,高分辨率的 PNG 导出是合适选择 —— 纸上的小文字难读,渲染后的 PNG 可以缩放到打印机能容纳的任何尺寸。
使用方法
拖入一张图片
把 JPG、PNG 或 WebP 拖到拖放区,或从剪贴板粘贴。工具会把图像下采样到所选的字符网格,再把每个单元格的亮度映射到一个 ASCII 字符。
选择字符集
可选标准 70 字符的 ASCII 梯度、密集 10 字符(▓▒░ ),或自定义字符。切换「反转」按钮翻转亮度映射 —— 在浅底深字和深底浅字两种输出之间切换时很有用。
复制或下载结果
可以把 ASCII 艺术复制为纯文本、下载为 .txt 文件,或导出为用等宽字体渲染字符的 PNG。PNG 导出是社交媒体分享的正确选择。
常见问题
每个像素是怎么挑选字符的?
图像先下采样到一个网格(默认 80 列宽),再算出每个单元格的平均亮度。亮度再映射到所选梯度里的一个字符 —— 暗的格子得到空格、句号这类稀疏字符,亮的格子得到 @、# 这类密集字符。映射通过字符集选择器配置。
颜色信息会保留吗?
默认不保留 —— 转换器只用 luminance,这正是 ASCII 艺术经典单色外观的由来。开启 ANSI 颜色模式可以为每个单元格保留 24 位 RGB 值 —— 输出就变成彩色 ASCII 渲染,需要支持真彩色的终端才能正确显示。
什么样的输入图像效果最好?
高对比度、轮廓清晰的图像 —— 肖像、logo、线条画 —— 产出的 ASCII 艺术最易读。带柔和渐变的照片(天空、雾)会坍塌成一片同字符的区域,丢掉细节。预处理时先增加对比度,或把源图色调分离为更少的亮度级,能得到更好的 ASCII 输出。
可以自定义字符集吗?
可以 —— 把任意一串字符粘贴到自定义集字段,工具按从最稀疏(左)到最密集(右)的顺序使用它们。短的字符集(3-5 字符)产出块状艺术;长的字符集(50+ 字符)产出平滑渐变。
为什么在我的编辑器里文字换行很奇怪?
输出使用与所选列数匹配的固定宽度换行。如果目标编辑器使用比例字体或自动换行,对齐就会被破坏。使用等宽字体(Menlo、Consolas、Courier)并关闭自动换行,可以保留网格对齐。
限制说明
- 默认是单色默认输出是单色 ASCII。颜色作为可选项提供,但需要支持 24 位 ANSI 颜色码的终端。PNG 导出路径用选定字体渲染 ASCII,但不携带源图像的颜色。
- 分辨率受字符网格限制输出分辨率受字符网格限制。一个 80 列的 ASCII 艺术把源图像表达为 80 × N 个字符 —— 视觉保真度无法超过这些字符能承载的东西。想要更高保真度,就增加列数,或在更大字号下用 PNG 导出。
- 柔和渐变会坍塌带平滑渐变的照片(天空、雾、肤色)会被压平成一段相同的字符,因为相邻单元格之间的亮度变化低于字符集的分辨能力。预处理时先过一遍色调分离(posterize)滤镜,把渐变分带成离散的亮度级。
平台说明
- macOS
- Terminal.app 和 iTerm2 都能正确渲染等宽 ASCII 艺术。如果要把图片转成文本片段嵌到代码注释、README 或聊天消息里(这些场景没法直接贴图),浏览器工具是合适选择。
- Windows
- Windows Terminal 和新的 Console Host 都能正确渲染等宽字符。老版本的 conhost.exe(老命令提示符用)对 Unicode 方块字符的处理不一致 —— 为了 cmd.exe 兼容性,请使用 70 字符 ASCII 集,而不是 Unicode 方块字符集。
- Linux
- 在命令行方面,`jp2a input.jpg --output=out.txt` 和 `ascii-image-converter` 是最接近的 CLI 等价物。对于从聊天或邮件粘贴过来的一次性图片转换,浏览器工具是合适选择。
- Web
- 完全在客户端运行。页面加载完成后可离线使用。适合把 ASCII 艺术嵌到代码注释、README 或聊天消息里 —— 这些场景下没法附二进制图像。