CodeKitHub
简体中文
图片工具

图片转ASCII艺术字

上传一张照片,就能得到一整片按原图明暗对应的ASCII字符——经典的“字符画”效果。整个过程用浏览器里的canvas完成:图片在本地读取,不会上传到任何地方。

工具介绍

这个工具把图片按网格采样,测量每个格子的亮度,然后用一个从“看起来空”(空格、句号)到“看起来密”(@、#、实心方块)的字符梯度替换掉。默认情况下亮的区域对应更密的字符,暗的区域对应更稀疏的字符——因为输出是深色背景上的浅色文字,这样才能让照片里亮的部分看起来真的亮,暗的部分融进背景里。

这跟本站另一个ASCII艺术字生成器不一样,那个是把打出来的文字变成大号方块字母(FIGlet风格横幅)。这个工具方向相反——它接收的输入是真实的照片或图片文件,不是打出来的文字。

为什么使用它?

  • 一键把任意照片变成可分享的纯文本ASCII艺术画。
  • 输出宽度可调,3种字符集(细致灰阶梯度、简单7字符梯度、Unicode方块阴影)可选不同风格。
  • 有反转选项,方便粘贴到浅色背景的场景里。
  • 100%本地处理——canvas处理在本地完成,照片不会被上传。
  • 免费、无需注册、无水印。

使用方法

  1. 点击上传区域或拖入JPG、PNG、WebP图片。
  2. 设置输出宽度(字符数)——数字越大细节越多,但结果也越宽。
  3. 选一个字符集:细致适合平滑渐变,简单或方块适合更粗犷的效果。
  4. 如果要粘贴到浅色背景的地方,打开反转选项。
  5. 点复制拿到纯文本结果。

示例

输入

一张黑色背景上有个亮白色圆形的照片,输出宽度100字符

输出

边缘大部分是空白/空格字符,中间聚集着密集的@和#字符,勾勒出圆形的轮廓

具体用什么字符取决于原图真实的明暗数值——这里描述的是效果模式,不是字面输出,因为每张源图片得到的结果都不一样。

实用技巧

  • 高对比度的照片(主体清晰、背景简单)转换出来的效果比杂乱、低对比度的场景可辨认得多。
  • 100-150个字符宽是大多数场景的甜点区间——够宽能保留真实细节,够窄能在普通屏幕上放得下。
  • 如果输出效果跟预期正好相反(主体变成了浅色轮廓而不是深色),试试切换反转选项,而不是换一张图片。
  • 在输出宽度很小的时候,“方块”字符集通常比“细致”效果更好辨认,因为少数几级阴影比几十种细字符更容易看清。

跟文字转ASCII艺术字有什么区别

如果你想用打出来的文字(项目名、一个词)做横幅,而不是转换照片,本站的ASCII艺术字生成器是干这个的——它用FIGlet字体画方块字母,完全不处理图片。

这两个工具经常搭配使用:用FIGlet横幅做标题,下面接一段用这个工具转换出来的图片当作视觉效果,两者都是纯文本,能安全粘贴进代码注释或纯文本README里。

ASCII艺术字生成器 · 图片压缩

常见问题

为什么我的ASCII艺术画看起来被压扁或拉长了?

等宽字体的字符格子高度大约是宽度的两倍,如果按1:1像素采样就会导致图片在竖直方向被压扁。这个工具已经按这个比例做了修正,采样的行数比1:1网格建议的要少——如果你粘贴到的地方看起来还是不对,可能是那个地方用的不是等宽字体。

字符集选择真的有影响吗?

有。“细致”用几十种字符做平滑渐变,远看或放大看效果最好。“简单”(7个字符)和“方块”(Unicode阴影方块)视觉上更粗犷,明暗层次之间的分界更明显——适合追求风格化效果而不是照片写实效果的场景。

什么时候该用反转?

默认情况下,照片里亮的区域会变成密集字符,暗的区域变成稀疏字符——这在深色背景(比如这个工具的输出框,浅色文字配深色背景)下看起来是对的。如果你要把结果粘贴到白色文档或浅色主题的应用里,打开反转,让图片暗的区域改为对应密集字符(深色墨迹配浅色纸张的逻辑),这样才能保持可辨认。

理想的输出宽度是多少?

100个字符是大多数场景下的合理默认值,在浏览器或终端里不用横向滚动就能看全。调高(200以上)能捕捉更多细节,但结果会比大多数屏幕都宽;调得太低(40以下)会丢失大部分可辨认的细节。

我的照片会被上传到哪里吗?

不会。图片的解码和采样全部用浏览器里的Canvas API直接完成,任何时候都不会发送到服务器。

相关工具