linux中将图像转换为ASCII格式

【Linux常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。

本指南介绍如何在 Linux 中将图像转换为 ASCII 格式。我们将使用Jp2a。Jp2a 是一个命令行工具,可帮助你将给定的图像转换为 ascii 字符格式。你可以指定图像文件和 URL 的混合,Jp2a 工具会立即将它们全部转换为 ascii 字符。Jp2a 有许多有用的选项来处理图像。

  • 从标准输入读取图像,
  • 将背景模式设置为浅色或深色,
  • 设置边框,
  • 设置输出高度和宽度,
  • 为输出图像设置自定义尺寸,
  • 垂直或水平翻转输出图像,
  • 在生成输出 ASCII 图像时使用特定字符,
  • 反转图像,
  • 从网上下载图像并转换它们,

在 Linux 中安装 Jp2a

Jp2a 被打包用于许多 Linux 发行版,并且在默认存储库中可用。

要在 Arch Linux 及其变体如 Manjaro Linux 上安装 Jp2a,请运行:

  1. $ sudo pacman -S jp2a

在 Debian、Ubuntu、Linux mint 上:

  1. $ sudo apt install jp2a

在 Fedora 上:

  1. $ sudo dnf install jp2a

在 CentOS / RHEL 上:

  1. $ sudo yum install epel-release
  1. $ sudo yum install jp2a

在 openSUSE 上:

  1. $ sudo zypper install jp2a

在 Linux 中将图像转换为 ASCII 格式

要将给定的 JPG/JPEG 图像转换为 ASCII 字符格式,只需运行:

  1. jp2a <path-to-image>

$ jp2a arch.jpg

输出

  1. MWXMWXWWXWWXWWXWWXWMXWMXNMNNMNNMNNMNNMNXWNXMWXWWXWWXWWXWMXWMXNMXNMNNMNNMNNMNXMNXMW
  2. NWWNNWNNWNNWNNWNNWWNWWNWWNWWNWWNWWNWWNWWdxWNNWNNWNNWNNWNNWWNWWNWWNWWNWWNWWNWWNWWNN
  3. WWNWWNWWNWWNWWNWWNWWNWWNNWNNWNNWNNWNNWNkccxWWNWWNWWNWWNWWNWWNNWNNWNNWNNWNNWNNWNNWW
  4. WWNWWNWWNWWNWWNWWNWWNWWNWWNWWNNWNNWNNW0ccccOWNWWNWWNWWNWWNWWNWWNWWNNWNNWNNWNNWWNWW
  5. NWWNNWNNWNNWNNWNNWWNWWNWWNWWNWWNWWNWWKlccccc0WNNWNNWNNWNNWWNWWNWWNWWNWWNWWNWWNWWNN
  6. WWNWWNWWNWWNWWNWWNWWNWWNNWNNWNNWNNWNXlccccccl0WWNWWNWWNWWNWWNNWNNWNNWNNWNNWNNWNNWW
  7. WWNWWNWWNWWNWWNWWNWWNWWNWWNNWNNWNNWNocccccccclXWNWWNWWNWWNWWNWWNNWNNWNNWNNWNNWWNWW
  8. NWWNNWNNWNNWNNWNNWWNWWNWWNWWNWWNWWNdccccccccccoXWNNWNNWNNWWNWWNWWNWWNWWNWWNWWNWWNN
  9. WWNWWNWWNWWNWWNWWNWWNWWNNWNNWNNWNNkccccccccccccoXWWNWWNWWNWWNNWNNWNNWNNWNNWNNWNNWW
  10. WWNWWNWWNWWNWWNWWNWWNWWNWWNWWNNWNkccccccccccccccdNWNWWNWWNWWNWWNWWNNWNNWNNWNNWWNWW
  11. NWWNNWNNWNNWNNWNNWWNWWNWWNWWNWWNkccccccccccccccccdNWNNWNNWWNWWNWWNWWNWWNWWNWWNWWNN
  12. WWNWWNWWNWWNWWNWWNWWNWWNNWNNWNNWXxccccccccccccccccdXWWNWWNWWNNWNNWNNWNNWNNWNNWNNWW
  13. WWNWWNWWNWWNWWNWWNWWNWWNWWNNWNOoOXNklccccccccccccccdNWNWWNWWNWWNNWNNWNNWNNWNNWWNWW
  14. NWWNNWNNWNNWNNWNNWWNWWNWWNWWNOccccok0kdcccccccccccccoXWNNWWNWWNWWNWWNWWNWWNWWNWWNN
  15. WWNWWNWWNWWNWWNWWNWWNWWNWWNNOcccccccccodoccccccccccccoXWWNWWNWWNNWNNWNNWNNWNNWNNWW
  16. WWNWWNWWNWWNWWNWWNWWNWWNWWNkccccccccccccccccccccccccccoNWNWWNWWNWWNNWNNWNNWNNWWNWW
  17. NWWNWWNNWNNWNNWNNWWNWWNWWNkccccccccccccccccccccccccccccoXWWNWWNWWNWWNWWNWWNWWNWWNN
  18. WWNWWNWWNWWNWWNWWNWWNWWNNkccccccccccccccccccccccccccccccoKWWNWWNNWNNWNNWNNWNNWWNWW
  19. WWNWWNWWNWWNWWNWWNWWNWWNxcccccccccccccccccccccccccccccccclXWNNWNNWNNWNNWNNWNNWNNWW
  20. NWWNNWNNWNNWNNWNNWWNWWXdcccccccccccccccccccccccccccccccccclKWWNWWNWWNWWNWWNWWNWWNN
  21. WWNWWNWWNWWNWWNWWNWWNNdccccccccccccccccccccccccccccccccccccl0NWNNWNNWNNWNNWNNWNNWW
  22. WWNWWNWWNWWNWWNWWNWWXoccccccccccccccccdx0Oxdlcccccccccccccccl0WNWWNNWNNWNNWNNWWNWW
  23. NWWNWWNNWNNWNNWNNWWKlcccccccccccccclkXWWNWWNNOlcccccccccccccccOWWNWWNWWNWWNWWNWWNN
  24. WWNWWNWWNWWNWWNWWNKlcccccccccccccclKNWWNWWNWWNXocccccccccccccccONWNNWNNWNNWNNWWNWW
  25. WWNWWNWWNWWNWWNWW0lcccccccccccccclXNNWNNWWNWWNWNoccccccccccccccckWNNWNNWNNWNNWNNWW
  26. NWWNNWNNWNNWNNWNkccccccccccccccccONWWNWWNWWNNWNNXccccccccccccccccdNWNWWNWWNWWNWWNN
  27. WWNWWNWWNWWNWWNkcccccccccccccccclNWNNWWNWWNWWNWWNdcccccccccloolcccdNWNNWNNWNNWWNWW
  28. WWNWWNWWNWWNWWxcccccccccccccccccoNWNNWWNWWNWWNWWNkcccccccccccoxO0OddNNNWNNWNNWNNWW
  29. NWWNNWNNWNNWXdccccccccccccccccccoWNWWNWWNWWNNWNNWkcccccccccccccclxKNXWWNWWNWWNWWNN
  30. WWNWWNWWNWWXoccccccccccccccccccccXWNNWWNWWNWWNWWNdcccccccccccccccccoOXNWNNWNNWWNWW
  31. WWNWWNWWNWXocccccccccccccccldxk00XWNNWNNWWNWWNWWNK0kxdlcccccccccccccccxKNNWNNWNNWW
  32. NWWNNWNNWKlccccccccccldxO0NWNWWNWWNWWNWWNWWNNWNNWNNWNNWXK0xdlccccccccccl0WNWWMMMMM
  33. WWNWWNWWOccccccccoxOXNWNWWNWWNNWNNWNNWWNWWNWWNWWNWWNWWNWWNWWNKOxoccccccccOWNWMMMMM
  34. WWNWWNWOcccccox0NNWWNWWNNWNNWNNWNNWNNWWNWWNWWNWWNWWNWWNWWNWWNNWNNN0xoccccckNNMMMMM
  35. NWWNNWkccok0XNWNNWWNWWNWWNWWNWWNWWNWWNWWNWWNNWNNWNNWNNWNNWWNWWNWWNWWNN0xocckWNWWNW
  36. WWNWNxdOXWWNWWNWWNWWNWWNWWNNWNNWNNWNNWWNWWNWWNWWNWWNWWNWWNWWNWWNWWNNWNNWNXOxxNNNWW
  37. NWWNXNNNWNNWNNWNNWNNWWNWWNWWNWWNWWNWWNWWNWWNNWNNWNNWNNWNNWNNWWNWWNWWNWWNWWNWNXWWNN

image-20220109225418434

在 Linux 中使用 Jp2a 将图像转换为 ASCII 格式

你可以指定多个图像并一次性转换所有图像。

  1. $ jp2a imgjpg imgjpg

此命令将给定的图像转换为 ASCII 并将它们一个接一个地显示出来。

就像我已经说过的,Jp2a 有很多选项和标志来操作输入图像。让我们通过示例来看看一些选项的用法。

从标准输入读取图像

要从标准输入读取图像并在标准输出中打印 ASCII 字符,请使用如下管道命令。

  1. $ cat arch.jpg | jp2a -

注意最后的连字符 (-)。

将输出写入文件

你可以将其写入文件,而不是在标准输出中显示 ASCII 图像,如下所示。

  1. $ jp2a arch.jpg --output=arch_ascii

此命令会将 ASCII 输出附加到名为arch_ascii的文本文件中。你可以使用cat命令查看文件的内容:

$ cat arch_ascii

image-20220109225615198

打印具有特定高度/宽度的图像

你可以将图像转换为 ASCII 格式并使用你选择的特定高度或宽度打印它们。

要使用特定高度(例如 30 行)打印,只需执行以下操作:

  1. $ jp2a --height=30 arch.jpg

宽度将根据图像的纵横比自动计算。

同样,要指定宽度,请运行:

  1. $ jp2a --weight=30 arch.jpg

你还可以组合这两个选项并打印图像。

  1. $ jp2a --height=20 --width=40 arch.jpg

在 X 列和 Y 行中以 ASCII 格式打印图像

以下命令将给定的图像文件转换为 ASCII 并以 50 列和 30 行的形式打印输出。

  1. $ jp2a --size=50x30 arch.jpg

输出:

image-20220109225658093

使用 Jp2a 在 X 列和 Y 行中以 ASCII 格式打印图像

将边框设置为 ASCII 字符

如果要在 ASCII 输出周围设置边框,请使用边框选项,如下所示:

  1. $ jp2a --border --size=50x30 arch.jpg

输出:

image-20220109225746493

使用 Jp2a 将边框设置为 ASCII 字符

在浅色/深色背景中打印图像

Jp2a 具有在浅色和深色背景中打印 ASCII 字符的选项。

  1. $ jp2a --background=light arch.jpg
  1. $ jp2a --background=dark arch.jpg

使用 Jp2a 在浅色或深色背景中打印图像

image-20220109225830116

在深色背景中将图像打印成 ASCII 格式

如果你查看白色背景的图片,但你使用的是深色背景上带有浅色字符的显示器,你应该使用反转标志反转图像。

  1. $ jp2a arch.jpg --invert

输出

  1. . . . . . . . . . . . . . . . . . . .
  2. :;
  3. ,oo;
  4. .oooo'
  5. .looooo.
  6. .looooool.
  7. cooooooool.
  8. :ooooooooooc.
  9. ,ooooooooooooc.
  10. ,oooooooooooooo:
  11. ,oooooooooooooooo:
  12. .;oooooooooooooooo:.
  13. 'c'. ,loooooooooooooo:
  14. 'ooooc,.,:oooooooooooooc.
  15. 'oooooooooc:cooooooooooooc.
  16. ,ooooooooooooooooooooooooooc
  17. ,ooooooooooooooooooooooooooooc.
  18. ,ooooooooooooooooooooooooooooooc.
  19. ;ooooooooooooooooooooooooooooooool.
  20. .:ooooooooooooooooooooooooooooooooool.
  21. :ooooooooooooooooooooooooooooooooooool.
  22. .coooooooooooooooo:;.';:loooooooooooooool.
  23. .looooooooooooool,. 'looooooooooooooo'
  24. .looooooooooooool. .cooooooooooooooo'
  25. .looooooooooooool. cooooooooooooooo,
  26. ,oooooooooooooooo' .oooooooooooooooo:
  27. ,ooooooooooooooool :ooooooooolcclooo:
  28. ;oooooooooooooooooc ,oooooooooooc;'.'::
  29. .:ooooooooooooooooooc ,ooooooooooooool;. .
  30. .coooooooooooooooooooo. :oooooooooooooooooc'.
  31. .coooooooooooooool:;,... ..,;:looooooooooooooo;.
  32. .looooooooool:;'. ...;:looooooooool.
  33. 'ooooooooc;'. .';coooooooo'
  34. 'oooooc;. .;cooooo,
  35. ,ooc,.. .;coo,
  36. ;:'. .';;
  37. . .

image-20220109225906934

使用 Jp2a 将图像转换为带有反转选项的 ASCII 格式

仅打印带有特定字符的图像

你可以使用你选择的一些自定义字符,而不是使用默认字符打印图像。

  1. $ jp2a --size=50x30 --chars=" ...sskk@@" arch.jpg

直接从 Internet 下载图像

不只是本地图像,还可以直接从 Internet 下载图像并将其转换为 ASCII。

要直接从 Internet 下载图像并以 ASCII 格式打印,请运行:

  1. $ jp2a --size=50x30 https://upload.wikimedia.org/wikipedia/commons/d/dd/Linux_logo.jpg

image-20220109225945351

使用 Jp2a 直接从 Internet 下载图像

或者,使用curlwget程序下载图像,jp2a 将从标准输入读取图像,如下所示。

  1. $ curl -s https://upload.wikimedia.org/wikipedia/commons/d/dd/Linux_logo.jpg | jp2a -

转换 JPG/JPEG 以外的图像

如果你有除 JPG/JPEG 以外的其他图像类型怎么办?在这种情况下,你可以使用ImageMagick 的转换工具,如下所示。ImageMagick 在许多 Linux 发行版的默认存储库中可用。

在 Arch Linux 及其变体如 Manjaro Linux 上:

  1. $ sudo pacman -S imagemagick

在 Debian、Ubuntu、Linux Mint 上:

  1. $ sudo apt install imagemagick

安装 ImageMagick 后,运行以下命令将给定的 PNG 格式图像转换为 Jpeg/Jpg 格式,然后再转换为 ASCII 格式:

  1. $ convert arch.png jpg:- | jp2a -

image-20220109230049035

请注意末尾的连字符 (-)。

使用 Jp2a 将 PNG 图像转换为 ASCII

同样,你可以简单地将任何图像格式转换为 JPEG/JPG,然后再将其转换为 ASCII 格式。

产生严格的 HTML 输出

Jp2a 可以选择生成严格的 XHTML 1.0 输出。

  1. $ jp2a --size=50x30 `--html` arch.jpg --output=arch.html

输出:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>jp2a converted image</title>
  5. <style type='text/css'>
  6. body {
  7. background-color: black;
  8. }
  9. .ascii {
  10. font-family: Courier;
  11. color: white;
  12. font-size:8pt;
  13. font-weight: bold;
  14. }
  15. </style>
  16. </head>
  17. <body>
  18. <div class='ascii'><pre>
  19. MNWNWNWWNWNWNMXMNWNWNWWNNXWNWXMXWNWNWNNWNWNWXMXWNW
  20. NWNWNWWWWNWNWNWNWNWNWWWWkkNWNWNWNWNWWWWWWNWNWNWNWN
  21. NWNWNWWWWWWNWNWNWNWNWWWKccKWNWNWNWNWWWWWWNWNWNWNWN
  22. NWNWNWWWWWWNWNWNWNWNWWNoccoNNWNWNWNWWWWWWNWNWNWNWN
  23. WNWNWWWWWWNWNWNWNWNWWWOcccckWNWNWNWNWWWWNWNWNWNWNW
  24. WNWNWWWWNWNWNWNWNWNWWXlcccccKNWNWNWNWWWWNWNWNWNWNW
  25. WNWWWWWWWWNWNWNWNWWWNdcccccclNWNWNWWWWWWWWNWNWNWNW
  26. NWNWNWWWWNWNWNWNWNWNOccccccccxNWNWNWWWWWWNWNWNWNWN
  27. NWNWNWWWWWWNWNWNWNWXlccccccccc0WNWNWWWWWWNWNWNWNWN
  28. WWWWWWWWWWWWWWWWWWNNkccccccccclXWWWWWWWWWWWWWWWWWW
  29. WNWNWWWWNWNWNWNWNWxlkKdccccccccoNNWNWWWWNWNWNWNWNW
  30. WNWNWWWWWWNWNWNWNOccccddocccccccxNWNWWWWNWNWNWNWNW
  31. WWWWWWWWWWWWWWWWKccccccccccccccccOWWWWWWWWWWWWWWWW
  32. NWNWNWWWWNWNWNWXlcccccccccccccccccKWWWWWWNWNWNWNWN
  33. NWNWNWWWWNWNWNNdcccccccccccccccccclXNWWWWNWNWNWNWN
  34. WWWWWWWWWWWWWWxccccccccccccccccccccdNWWWWWWWWWWWWW
  35. WNWNWWWWWWNWNOccccccccccccccccccccccxNWWNWNWNWNWNW
  36. WNWNWWWWWWNWKccccccccclx0OklcccccccccOWWNWNWNWNWNW
  37. WWWWWWWWWWWXlccccccccoXWWWWXdccccccccc0WWWWWWWWWWW
  38. NWNWNWWWWNNocccccccclNWWNWNWNocccccccclXWNWNWNWNWN
  39. NWNWNWWWWNdcccccccccOWWWNWNWNKcccccccccoNNWNWNWNWN
  40. WWWWWWWWNxccccccccccXWWWWWWWWNlcccccldlcoNWWWWWWWW
  41. WNWNWWWWOcccccccccccNWWWWNWNWNocccccccx0O0NWNWNWNW
  42. WNWNWWW0ccccccccccccXWWWWNWNWNlcccccccccdKNWNWNWNW
  43. NWNWNWKlcccccccccodkXWWWNWNWNNkdocccccccccdKWNWNWN
  44. NWNWNXlccccccdk0NNWNWWWWNWNWNWNWNN0kdcccccclXNWMMM
  45. NWNWNoccclx0NNWNWNWNWWWWNWNWNWNWNWNWWN0xlccclXWMMM
  46. WNWNdclkKNNWNWNWNWNWWWWWWNWNWNWNWNWWWWWWNKklcdNWMW
  47. WNWkxKNWWWNWNWNWNWNWWWWWWNWNWNWNWNWNWWWWNWNWKxkWNW
  48. NWXNNWWNWNWNWNWNWNWNWWNWNWNWNWNWNWNWNWWNWNWNWNNNWN
  49. </pre>
  50. </div>
  51. </body>
  52. </html>

当你想在 Web 浏览器中查看图像的 ASCII 字符时,这会很有用。

使用 Jp2a 生成严格的 HTML 输出

还有更多选项可用,例如在 X 和 Y 方向翻转图像,将 RGB 设置为灰度转换权重,在输出中使用 ANSI 颜色,使用终端显示高度/宽度等。查看帮助部分或手册页以了解使用它们。

【Linux常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。

返回笔记列表
入门小站