图片

照片转 ASCII 字符画:让效果更清晰的技巧

选择背景简单、对比强烈的照片,再根据粘贴的地方设置宽度。

最后更新:

图片转字符画工具把照片分成小格子,再用与亮度相符的字符填满每个格子。亮的格子用 @、# 等密集字符,暗的格子用 . 或空格。所以同一个工具,用哪张照片、怎么设置,结果会差别很大。

1. 挑选适合转换的照片

每个字符代表照片的一小块。设为 40 列时,整幅画每行只能用 40 个字符,细节会消失,只留下大的形状和明暗对比。

适合转换 不适合转换
纯色或简单的背景 物品很多的杂乱背景
主体占满画面 人物很小的合影
明暗区域分明 整体亮度差不多
人脸、宠物特写、Logo 风景、带小字的截图

转换前先围绕主体裁剪照片,同样的宽度也会清楚得多。

2. 根据粘贴的地方设置宽度

宽度就是列数。列越多,保留的细节越多,但行也越长。行比聊天气泡或 GitHub 页面还长时会换行,图就乱了,所以先决定要粘贴到哪里。

粘贴到 建议宽度
聊天应用和 Discord 40 到 60 列
GitHub README 或代码注释 80 列左右
终端 80 到 120 列
PNG 图片 90 列以上,越宽越像照片

用默认设置把示例小猫转成 40 列,效果如下。即使只有 40 列,耳朵、眼睛和身体也都看得出来。(用这组设置打开)

     ......------------------......
    .....--**::::::::::::::**--.....
   ....----#%%*=::::::::=*%%#----.....
  ....---::%%%%%########%%%%%::---....
 ....---::+%%@@@@@@@@@@@@@%%%+::---....
....----::#@@@@@@@@@@@@@@@@@%#::----....
....---::#@@@%#*#%@@@@%#*#%@@%#::---....
....---:*%@@@*@.#*@@@@*%.%*@@%%*:---....
....----*%@@@##:##@@@@##:##@@%%*----....
 ....-++=%%@@@@@@@@%%@@@@@@@%%%=++-.....
 ...-===+#@@@@@@@@@%%@@@@@@@@@#+===-...
  ..-+:---:*%%@@@%@%%@%@@%%%*:---:+-..
   .....-+*####%%%%%%%%%%####*+-.....
    ...+########################+...
      *##########################*

3. 选择字符集

字符集是每一级亮度所使用的字符列表。

字符集 字符 最适合
标准 . : - = + * # % @ 几乎哪里都能用
方块 ░ ▒ ▓ █ 浓淡平滑、看起来扎实,非常适合 PNG
精细 70 个字符 层次细腻,宽度较大时效果明显
二值 # 和空格 只有剪影,适合 Logo 和简单形状

同一只小猫换成方块字符集是这样的。格子看起来像被涂满了,即使宽度较小,形状也很扎实。(用这组设置打开)

             ░░░░░░░░░░░░░░
          ░▒▒░░░░░░░░░░░░░░▒▒░
        ░░░▓▓▓▒░░░░░░░░░░▒▓▓▓░░░
       ░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░
      ░░░░░▓▓██████████████▓▓░░░░░
      ░░░░▓█████████████████▓▒░░░░
     ░░░░▓███▓▓▒▓▓████▓▓▒▓▓██▓▓░░░░
     ░░░▒████▒█ ▓▒████▒▓ ▓▒██▓▓▒░░░
      ░░▒▓███▓▒░▒▒████▒▒░▒▒██▓▓▒░░
     ░░░░▓██████████▓███████▓▓▓░░░░
    ░░░░░▓█████████▓▓█████████▓░░░░░
    ░▒░ ░░░▒▓▓███▓█▓▓█▓██▓▓▓▒░░░ ░▒░
        ░░▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒░░
       ░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░
      ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

在不使用等宽字体的应用中,方块字符的宽度可能不同,导致各行错位。以文字发到聊天应用时,标准字符集更稳妥。

4. 保持自动色调开启

自动色调会查看照片的亮度分布并相应拉开对比度,让转换器用上字符集中更多的层级。如果把它关掉,再降低对比度会怎样?

::::::============================::::::
::::=======**==============**=======::::
:::========*##*+========+*##*========:::
::=========#####********#####=========::
:=========+##################+=========:
:=========*#####%%%%%########*=========:
=========*####***#%%%##***####*=========
========*####*#=#*#%##*#:#*####*========
========*####**=**####**=**####*========
:=====+++######################+++=====:
::===++++*####################*++++====:
::===*=====*################*=====*===::
:::======+****###########*****+======:::
:::::==+************************+==:::::
::::::****************************::::::

背景几乎全是 = 和 :,小猫大多是 # 和 *,眼睛、鼻子等细节都糊了,因为亮度差被压缩到了少数几级。(用这组设置打开)

请保持自动色调开启,只在结果太暗或太亮时稍微调整亮度和对比度。如果形状仍然模糊,就提高轮廓强调。轮廓强调可用于“标准”和“精细”字符集。

5. 白色背景要反相

转换工具的结果框是深色背景。亮的区域用密集字符,所以在深色屏幕上看起来是对的。

如果粘贴到记事本或 GitHub 浅色主题这样的白色背景上,明暗看起来会像照片底片一样颠倒。要放到白色背景上,请在复制前打开反相。

6. 选择保存方式

你想要 按钮
粘贴字符 复制
存成文件或放进代码 TXT
原样发送形状 PNG
保留原始颜色 打开彩色后保存 PNG

以文字复制时只保留字符,颜色会丢失。想保留颜色,请打开彩色并保存为 PNG。

照片在浏览器中转换,不会为了转换而发送到服务器。