图片 → ASCII 艺术转换器,免费

将任意图片转换为精美的 ASCII 艺术。调整宽度、字符密度和反转选项,为您的照片创建等宽文本版本。

上传图片

支持格式:JPEG、PNG、GIF、WebP、BMP。建议最大 500×500 px。

设置

20–300

ASCII 艺术输出

上传图片并点击「转换为 ASCII」以生成输出。

工作原理

  1. 上传图片:选择要转换为 ASCII 艺术的图片(JPEG、PNG、WebP、GIF)。
  2. 调整设置:以字符数设置输出宽度,选择密度字符集(详细或简约),并在彩色和单色之间切换。
  3. 复制或下载 ASCII 艺术:复制文本输出,或下载为文本文件以便分享或嵌入。

为什么使用图片 → ASCII 转换器?

ASCII 艺术将照片图像转换为文本字符 · 这一技术从复古的计算机美学延伸到现代终端应用、README 文件、邮件、评论和社交媒体中的创意表达。图片 → ASCII 转换器自动完成复杂的亮度 → 字符映射,立即从任意照片产出可分享的文本艺术。

功能特性

  • 可调宽度:控制列数以平衡细节与可读性。
  • 多种字符集:使用密集的字符阶梯获得细腻阴影,或使用简约字符集获得大胆图形效果。
  • 彩色 ASCII 模式:生成 ANSI 颜色代码,用于支持的终端中显示彩色 ASCII 艺术。
  • 对比度调整:在转换前提高图片对比度,以获得更清晰的 ASCII 效果。
  • 下载 .txt:将 ASCII 艺术保存为纯文本文件。

常见问题

什么样的图片最适合做 ASCII 艺术?

高对比度、主体清晰、背景简单的图片效果最好。肖像、logo 和强图形效果的图片表现不错。画面杂乱、对比低或尺寸小的图片会显得模糊。

为什么我的 ASCII 艺术看起来被拉伸了?

ASCII 字符高度大于宽度(长宽比约 1:2)。转换器会加以补偿,但结果可能因终端或等宽字体而异。如果显示被拉伸,请调整宽度或长宽比设置。

可以在 README 文件中使用 ASCII 艺术吗?

可以。用代码块包裹 ASCII 艺术(Markdown 中使用三个反引号)以确保用等宽字体渲染,这对 GitHub 和文档站点上正确显示 ASCII 艺术至关重要。

基于文本的图像艺术 60 年简史

基于文本的图像艺术早于 ASCII 本身。最早已知的计算机肖像由贝尔实验室的 Kenneth KnowltonLeon Harmon1966 年制作;他们著名的「Studies in Perception I」(由电子符号构成的斜倚裸体)曾于 1968 年在 MoMA 的「The Machine as Seen at the End of the Mechanical Age」展览中展出。ASCII(美国信息交换标准代码)1963 年标准化,包含 128 个字符;电传打字员几乎立即开始用它进行可打印的「打字机艺术」,这一传统可追溯到 1940 年代无线电电传打字机上的 RTTY 艺术。BBS 时代(1980 年代)和 Usenet 文化推广了 ASCII 签名、横幅和「表情符号」,后者由 Scott Fahlman 于 1982 年 9 月在卡内基梅隆大学发明。Joan G. Stark,签名为「jgs」,在 1990 年代制作了数千件手工 ASCII 作品,定义了这种美学。FIGlet(1991 年,Frank、Ian 和 Glenn)自动化了大字母横幅。aalib(Jan Hubička,1997)将动态图像渲染为 ASCII;你仍然可以通过 mpv --vo=aa 管道传输视频。2010 年代带来了 Unicode 块艺术(使用 U+2580–U+259F 半块字符实现 2× 垂直分辨率)和盲文艺术(U+2800–U+28FF 每个字符单元打包 8 个点,产生比 ASCII 高 4× 的有效分辨率)。chafa(Hans Petter Jansson,2018)等现代工具结合三者,生成最高保真度的文本模式图像。

字符渐变与亮度映射

  • Paul Bourke 渐变(10 级)。` .:-=+*#%@ 从浅到深,由 Paul Bourke 于 1997 年在 UWA 发布。终端 ASCII 艺术的事实标准。在白底黑字终端上请反转。
  • 70 字符渐变。` .'`^",:;Il!i><~+_-?][}{1)(|/tfjrxnuvczXYUJCLQ0OZmwqpdbkhao*#MW&8%B@$。阴影细节大幅增加;非常适合宽度 ≥ 100 列的肖像。约 2010 年起源于「ASCII Art Generator」社区。
  • 块字符(Unicode 2580-259F)。░▒▓█ 提供 4 个亮度级别,加上让你能在每个字符单元中编码两个像素的半块字符。垂直分辨率加倍。
  • 盲文(U+2800-U+28FF)。每个单元 8 个点共 256 种不同图案。实际上为每个字符提供 2 个水平 × 4 个垂直子像素,即纯 ASCII 的 4 倍分辨率。drawille(asciimoo,2014)等工具使用此技术。
  • 亮度公式。每个像素在被映射到字符之前,从 RGB 折叠为单个亮度值。经典公式是 ITU-R BT.601(1982):Y = 0.299R + 0.587G + 0.114B。用于高清视频的现代 BT.709(1990)变体使用 0.2126R + 0.7152G + 0.0722B。两者都考虑了人眼敏感性(绿色占主导,蓝色贡献最小)。
  • 字符宽高比。大多数字体上,等宽字符大约是 2:1 高:宽(如 Consolas、Menlo、Cascadia Mono)。如果你以 1:1 像素比采样图像,生成的 ASCII 会看起来在垂直方向上被拉伸。好的转换器每 2 行采样但每 1 列采样以补偿。

ASCII 艺术的实际用途

  • GitHub README。围栏代码块中作为 ASCII 艺术的徽标和项目横幅在 GitHub、GitLab、Codeberg 上完美渲染。在流行的 CLI 工具中常见(neofetchhtopoh-my-zsh)。在 GitHub 上搜索「awesome ASCII art」获取集合。
  • SSH 当日消息(MOTD)。许多服务器在你 SSH 登录时显示 ASCII 艺术。Ubuntu Server、Debian、OpenSUSE 都支持自定义 /etc/motd。云提供商(DigitalOcean、Linode)默认包含它们。
  • 系统信息工具。neofetch(~2015)、screenfetchfastfetchhyfetch(LGBTQ+ 骄傲旗帜变体)以 ASCII 显示发行版徽标,并附带系统规格。在 r/unixporn 截图中几乎是必需的。
  • 电子邮件和论坛签名。1980 年代-1990 年代的原始用例。现代的 Hacker News、Reddit、IRC 机器人和 Discord(使用等宽围栏代码)仍然有很多。
  • 终端视频和游戏。mpv --vo=tct(真彩色终端)在终端中播放视频。NetHack、Dwarf Fortress、Cogmind、Caves of Qud 是建立在 ASCII/Unicode 瓦片上的完整游戏。浏览器移植:asciinema 记录终端会话。
  • 生成式和故障艺术。ASCII 转换以产生美学伪影的方式具有破坏性。用于杂志、音乐视频、蒸汽波/赛博朋克视觉效果、Loot 衍生品等 NFT 系列。
  • 教授图像处理。亮度映射、降采样、伽马校正在输出为人类可读字符时更容易掌握。CS101 图形课程中的常见作业。

毁掉结果的常见错误

  • 忽略字符宽高比。采样每个像素,你的输出会比原始图像高两倍。在采样前跳过每隔一行(或将 Y 缩放 0.5)。大多数 ASCII 艺术在检查时看起来「被压扁」,因为转换器忘记了这一步。
  • 输入低对比度或繁忙的照片。ASCII 只有 10-70 个亮度级别,而源图像有 256 个。柔和的渐变变成平面灰色。简单背景上的高对比度主题(徽标、肖像、剪影)有效;日落和森林变成糊状。
  • 将宽度设置为 200 列以上。大多数终端为 80-120 列宽。中途换行的输出无法阅读。对于 GitHub README,限制为 80,或使用浏览器的「缩放」功能。
  • 错误终端上的反向渐变。如果你将在深色终端上查看(大多数现代终端),浅色字符(.,)需要映射到深色图像像素。反向:浅色终端上,深色字符(@#)用于深色像素。选择错误,你的图像会渲染为负片。
  • 在非等宽字体外显示。将 ASCII 艺术粘贴到 Slack 没有代码块,粘贴到 Notion 作为段落,粘贴到 Word 文档使用比例字体:不同宽度的字符破坏了网格,你看到的是噪音。始终使用 code 块包裹或明确使用等宽。
  • 转换高度压缩的 JPEG。JPEG 的 8×8 块伪影会在 ASCII 输出中放大为可见的网格噪声。PNG 和高质量 JPEG 产生更干净的 ASCII;如果可以从源重新导出,请这样做。
  • 将 ANSI 着色的 ASCII 粘贴到文本文件。ANSI 转义序列如 \e[31m 在终端中渲染,但在编辑器、GitHub 和聊天应用中显示为字面文本。文档用纯 ASCII,ANSI 仅用于终端输出。

更多常见问题

我的 ASCII 艺术应该多少字符宽?

根据粘贴的地方匹配。终端输出用 80 列(大多数 shell 仍是默认)或现代宽屏终端用 120。GitHub README桌面和移动端 80 都安全;只在乎桌面用 100。电子邮件签名用 60-70。Discord/Slack用 60,以保持在大多数用户的消息视图内。超过 200 几乎没用,终端换行开始起作用。

为什么我的输出在某些字体中看起来更好?

三个原因。第一,字符宽高比变化:Consolas 约为 2:1 高:宽,Cascadia Mono 为 2.1:1,Menlo 为 1.95:1。为一种字体调整的输出在另一种字体中看起来略有偏差。第二,行间距:行高 1.2 的字体插入了垂直间隙,扰乱了连续阴影。显示 ASCII 艺术时设置 line-height: 1。第三,抗锯齿:子像素渲染模糊了字符之间的边界;在终端首选项中关闭它以获得更清晰的 ASCII。

ASCII 艺术可以转换回图像吗?

从某种意义上说,可以,但这是一个有损的往返。在画布上以小字号渲染等宽字体的 ASCII 文本,保存为 PNG;你得到 ASCII 的图像。反方向(ASCII → 原始照片)是不可能的,在降采样和亮度平坦化过程中丢弃了太多信息。每个字符单元现在可能代表原始的 8×16 像素。

ASCII 艺术、ANSI 艺术和 Unicode 艺术有什么区别?

ASCII 艺术仅使用 7 位 ASCII 集(1963)的 95 个可打印字符,根据定义为单色。ANSI 艺术添加转义序列(在 ANSI X3.64,1979中标准化的 \e[31m 样式代码)用于前景/背景颜色和样式。在 BBS 和现代 lolcat 中常见。Unicode 艺术使用完整的 Unicode 范围(16 位及更高),包括块字符(U+2580-259F)和盲文(U+2800-28FF),每个字符单元提供 4-8× 的分辨率。真彩色 Unicode 艺术结合两者:通过 ANSI 真彩色代码加 Unicode 块字符提供 1670 万种颜色;这就是 chafa 和现代 mpv 产生的。

我在这里转换时,上传的图像会发送到服务器吗?

不会。图像解码(通过浏览器内置的图像解码器)、降采样(通过 HTML5 Canvas 2D API)、亮度映射和字符替换都在 JavaScript 中本地运行。转换时在 DevTools 中打开 Network 标签;你会看到针对你的图像的零出站请求。对机密照片、受 NDA 约束的工作、家庭照片和未发布的产品照片来说是安全的。