程序员调试终端
后端排查线上日志时,截图里的报错信息在纯黑背景的 iTerm2 里看不清。把截图拖进这个工具,输出 80 列宽的纯 ASCII 字符画,粘贴到 Slack 或飞书聊天框里,同事能直接复制字符去 grep,不用对着模糊的像素图猜。
支持 JPG · PNG · WebP · GIF · BMP · 单张 ≤ 30MB
截图直接 CtrlV 粘贴
在终端或博客里贴一张图,发现它因格式被拒——把图片转成字符画,就能绕过几乎所有平台的图片限制。这个工具读取图片像素的明暗与色彩,映射为 ASCII 字符或带 ANSI 颜色的字符矩阵,输出纯文本或 HTML。转换全程在浏览器本地完成,不上传原图,适合需要在纯文本环境(如邮件、代码注释、GitHub README)里嵌入视觉内容的开发者与写作者。
后端排查线上日志时,截图里的报错信息在纯黑背景的 iTerm2 里看不清。把截图拖进这个工具,输出 80 列宽的纯 ASCII 字符画,粘贴到 Slack 或飞书聊天框里,同事能直接复制字符去 grep,不用对着模糊的像素图猜。
写了一篇技术教程,配了一张关键架构图。担心被爬虫直接抓走原图,把图转成黑白字符画后嵌入文章。爬虫只能抓到一堆无意义的 `@` 和 `#`,但读者在浏览器里能看清节点关系。本工具支持调节字符密度,能保留原图的结构轮廓。
注册某个复古 BBS 论坛,要求头像文件不超过 2KB。自拍或 LOGO 压缩后全是马赛克。把原图缩小到 64×64 像素,用本工具输出 48 列字符画,粘贴到记事本存成 .txt,文件体积不到 1KB,上传后论坛自动渲染成等宽字体头像,辨识度反而比模糊的缩略图高。
制作一本纯文字版 Zine,印刷厂要求所有元素必须是单色矢量,不能有光栅图。把活动海报转成 120 列字符画,直接作为排版元素排进版面,打印机输出后远看是一块灰度纹理,近看能读出活动时间和地点。本工具支持导出纯文本,不产生任何图片文件。
| 输入 | 输出 | 说明 |
|---|---|---|
| 一张纯白背景、居中黑色实心圆(直径 100px)的 200×200 PNG 图片 | (ASCII 字符画,白色区域用空格,黑色圆用 @ 字符填充,整体呈圆形轮廓) | 常规:高对比度简单图形,验证字符映射与空间定位是否准确 |
| 一张 800×600 的彩色风景照片(JPG,含天空、树木、水面) | (彩色字符画,每个字符用对应像素的 ANSI 颜色渲染,天空区域用浅蓝字符,树木用深绿字符) | 常规:多色渐变场景,检验彩色字符的色值压缩与字符密度平衡 |
| 一张 1×1 像素的纯红色图片(PNG,RGB 255,0,0) | (单个红色字符,如 '█' 或 '@',取决于字符集选择) | 边界:最小图片尺寸,验证极端缩放时是否崩溃或输出空 |
| 一张 5000×5000 像素的超大图片(PNG,文件 25MB) | (工具提示:图片尺寸过大,建议缩小至 1000×1000 以内;或自动降采样后输出字符画) | 边界:超大输入,暴露工具的尺寸限制或降采样策略 |
| 一张完全透明的 PNG 图片(所有像素 alpha=0) | (全部输出为空格,即空白字符画) | 边界:全透明图片,验证透明通道处理逻辑(是否当作黑色或跳过) |
| 一张纯白色图片(RGB 255,255,255,200×200) | (全部输出为空格,或极浅色字符如 '.',取决于字符集) | 易错:纯白背景,用户可能误以为工具未工作,实际是字符映射为空格 |
| 一张包含细线文字(2px 宽)的 100×100 灰度图 | (细线区域字符稀疏,可能断线或模糊,如 '|' 和 '-' 混合) | 易错:低分辨率细线条,暴露字符画对细节的保留能力不足 |
1.上传图片分辨率过高导致字符画模糊
上传 4000×3000 像素的照片直接生成先将图片缩放到 200×150 像素再上传字符画每个字符对应一个像素块,原始分辨率过高时每个像素被压缩成单个字符,细节丢失,反而模糊。工具内部有自动缩放逻辑,但用户手动缩放可控制输出密度。
2.使用透明背景 PNG 导致字符画背景变黑
上传透明背景的 logo.png先给图片填充白色背景(如 #FFFFFF)再上传ASCII 字符画本质是纯文本,不支持透明通道。透明区域在转换时会被当作黑色(RGB 0,0,0),导致背景出现大量黑色字符。
3.彩色字符模式下忽略字符集选择
彩色字符画输出后全是 'M' 或 '@'在彩色模式下选择「全字符集」或「宽字符集」工具默认字符集为「窄字符集」(如 .:-=+*#%@),字符密度低,彩色模式下颜色信息丰富但形状单一。切换到全字符集可提升画面细节。
4.上传 GIF 动图但未勾选「逐帧处理」
上传一个 3 帧的 GIF,只得到第一帧的字符画在高级选项中勾选「逐帧处理」GIF 是多帧图像,工具默认只取第一帧。逐帧处理会为每帧生成字符画并组合成动画,但会显著增加生成时间。
5.用浅色图片生成黑白字符画时对比度不足
上传一张淡黄色背景的白色文字截图先调整图片对比度(如用 PS 或在线工具拉高对比度至 80%)黑白字符画依赖灰度值映射字符,低对比度图片的灰度值集中在窄区间,导致输出字符几乎全是 '.' 或 ' ',看不出内容。
6.复制字符画到微信/QQ 时格式错乱
直接 Ctrl+C 复制结果框中的文本点击「复制纯文本」按钮,或先粘贴到记事本再复制到聊天窗口结果框中的字符画使用等宽字体和空格对齐,微信/QQ 会压缩连续空格、改变字体,导致排版崩坏。纯文本按钮会保留原始空格。
7.上传带有水印/文字的复杂图片期望完美还原
上传一张布满半透明水印的产品图先去除水印或使用纯色背景的简单图片字符画的分辨率远低于原图(通常 100-200 字符宽),水印和主体叠加后字符无法区分前后景,输出会变成一团噪点。
8.在移动端查看字符画时未使用等宽字体
在手机浏览器默认字体下查看字符画将浏览器字体设置为等宽字体(如 Courier New、Fira Code)字符画的每个字符必须占据相同宽度,非等宽字体(如苹方、思源黑体)会导致字符宽度不一,画面扭曲。
灰度值 = 0.299 × R + 0.587 × G + 0.114 × B
R红色通道值,0–255G绿色通道值,0–255B蓝色通道值,0–255像素 RGB(120, 200, 80):灰度值 = 0.299×120 + 0.587×200 + 0.114×80 = 35.88 + 117.4 + 9.12 = 162.4,取整 162,映射到字符集(如 0–255 对应 70 级灰度字符表)输出字符 'M'。
本工具在浏览器本地运行,没有服务端文件大小限制,但受浏览器内存和手机性能影响。实测 1920×1080 的普通照片可以正常转换。如果图片像素数过高(比如 4000 万像素单反原图),建议先压缩到 2000 像素宽以内再上传,否则转换时浏览器可能卡顿或闪退。字符画的宽度默认按图片宽高比自动适配,不会主动截断图片内容。
不能保证清晰可读。字符画本质是用 ASCII 字符模拟灰度/颜色,每个字符替代一个像素块,分辨率远低于原图。图片中的文字转成字符后通常只能看出大概形状轮廓,小字号文字会糊成一团。如果需要提取图片文字,应该用 OCR 工具,字符画不适合这个用途。
结果区域下方有「复制」按钮,点击后会把当前显示的字符画文本复制到剪贴板。注意:彩色字符画复制到记事本等纯文本环境会丢失颜色代码,只能看到黑白字符。如果要保留颜色效果,请粘贴到支持 ANSI 颜色码的终端或代码编辑器(如 VS Code)中。推荐直接截图保存效果。
透明通道在字符画转换时会被丢弃。浏览器在处理图片时会把透明像素默认渲染为黑色(或白色,取决于浏览器实现)。本工具目前不单独处理 Alpha 通道,所以透明区域会变成纯色块。建议上传前先用图片编辑软件给透明 PNG 加一个纯色背景(比如白色或灰色),转换效果会干净很多。
黑白模式只用字符的疏密(比如 @%#*+ 等)模拟明暗,输出纯文本。彩色模式在字符基础上给每个字符加上前景色,能保留原图的颜色信息。彩色字符画更适合发到支持彩色文本的社交平台或论坛(如贴吧、Discord),但文件体积更大,复制粘贴后颜色可能丢失。黑白模式兼容性最好,任何地方都能显示。
字符画默认密度是根据图片尺寸自动计算的。如果结果看起来密密麻麻、难以辨认轮廓,说明每个字符对应的像素块太小。可以尝试在工具界面上调低「字符密度」或「输出宽度」参数(如果有该选项),让每个字符覆盖更多像素,轮廓会更清晰。也可以上传分辨率更低一点的图片。
完全不需要联网。本工具所有计算都在浏览器本地完成(实现方式为 FE),图片上传后不会离开你的电脑。转换过程不涉及任何网络请求,断网也能正常使用。图片数据只在内存中处理,关闭页面后自动释放,不会有隐私泄露风险。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。