本指南介绍如何在 Linux 中将图像转换为 ASCII 格式。我们将使用
Jp2a
。Jp2a 是一个命令行工具,可帮助你将给定的图像转换为 ascii 字符格式。你可以指定图像文件和 URL 的混合,Jp2a 工具会立即将它们全部转换为 ascii 字符。Jp2a 有许多有用的选项来处理图像。
- 从标准输入读取图像,
- 将背景模式设置为浅色或深色,
- 设置边框,
- 设置输出高度和宽度,
- 为输出图像设置自定义尺寸,
- 垂直或水平翻转输出图像,
- 在生成输出 ASCII 图像时使用特定字符,
- 反转图像,
- 从网上下载图像并转换它们,
在 Linux 中安装 Jp2a
代码语言:javascript复制Jp2a 被打包用于许多 Linux 发行版,并且在默认存储库中可用。
要在 Arch Linux 及其变体如 Manjaro Linux 上安装 Jp2a,请运行:
$ sudo pacman -S jp2a
代码语言:javascript复制在 Debian、Ubuntu、Linux mint 上:
$ sudo apt install jp2a
代码语言:javascript复制在 Fedora 上:
$ sudo dnf install jp2a
代码语言:javascript复制在 CentOS / RHEL 上:
$ sudo yum install epel-release
代码语言:javascript复制$ sudo yum install jp2a
代码语言:javascript复制在 openSUSE 上:
$ sudo zypper install jp2a
在 Linux 中将图像转换为 ASCII 格式
代码语言:javascript复制要将给定的 JPG/JPEG 图像转换为 ASCII 字符格式,只需运行:
jp2a <path-to-image>
$ jp2a arch.jpg
代码语言:javascript复制输出
MWXMWXWWXWWXWWXWWXWMXWMXNMNNMNNMNNMNNMNXWNXMWXWWXWWXWWXWMXWMXNMXNMNNMNNMNNMNXMNXMW
NWWNNWNNWNNWNNWNNWWNWWNWWNWWNWWNWWNWWNWWdxWNNWNNWNNWNNWNNWWNWWNWWNWWNWWNWWNWWNWWNN
WWNWWNWWNWWNWWNWWNWWNWWNNWNNWNNWNNWNNWNkccxWWNWWNWWNWWNWWNWWNNWNNWNNWNNWNNWNNWNNWW
WWNWWNWWNWWNWWNWWNWWNWWNWWNWWNNWNNWNNW0ccccOWNWWNWWNWWNWWNWWNWWNWWNNWNNWNNWNNWWNWW
NWWNNWNNWNNWNNWNNWWNWWNWWNWWNWWNWWNWWKlccccc0WNNWNNWNNWNNWWNWWNWWNWWNWWNWWNWWNWWNN
WWNWWNWWNWWNWWNWWNWWNWWNNWNNWNNWNNWNXlccccccl0WWNWWNWWNWWNWWNNWNNWNNWNNWNNWNNWNNWW
WWNWWNWWNWWNWWNWWNWWNWWNWWNNWNNWNNWNocccccccclXWNWWNWWNWWNWWNWWNNWNNWNNWNNWNNWWNWW
NWWNNWNNWNNWNNWNNWWNWWNWWNWWNWWNWWNdccccccccccoXWNNWNNWNNWWNWWNWWNWWNWWNWWNWWNWWNN
WWNWWNWWNWWNWWNWWNWWNWWNNWNNWNNWNNkccccccccccccoXWWNWWNWWNWWNNWNNWNNWNNWNNWNNWNNWW
WWNWWNWWNWWNWWNWWNWWNWWNWWNWWNNWNkccccccccccccccdNWNWWNWWNWWNWWNWWNNWNNWNNWNNWWNWW
NWWNNWNNWNNWNNWNNWWNWWNWWNWWNWWNkccccccccccccccccdNWNNWNNWWNWWNWWNWWNWWNWWNWWNWWNN
WWNWWNWWNWWNWWNWWNWWNWWNNWNNWNNWXxccccccccccccccccdXWWNWWNWWNNWNNWNNWNNWNNWNNWNNWW
WWNWWNWWNWWNWWNWWNWWNWWNWWNNWNOoOXNklccccccccccccccdNWNWWNWWNWWNNWNNWNNWNNWNNWWNWW
NWWNNWNNWNNWNNWNNWWNWWNWWNWWNOccccok0kdcccccccccccccoXWNNWWNWWNWWNWWNWWNWWNWWNWWNN
WWNWWNWWNWWNWWNWWNWWNWWNWWNNOcccccccccodoccccccccccccoXWWNWWNWWNNWNNWNNWNNWNNWNNWW
WWNWWNWWNWWNWWNWWNWWNWWNWWNkccccccccccccccccccccccccccoNWNWWNWWNWWNNWNNWNNWNNWWNWW
NWWNWWNNWNNWNNWNNWWNWWNWWNkccccccccccccccccccccccccccccoXWWNWWNWWNWWNWWNWWNWWNWWNN
WWNWWNWWNWWNWWNWWNWWNWWNNkccccccccccccccccccccccccccccccoKWWNWWNNWNNWNNWNNWNNWWNWW
WWNWWNWWNWWNWWNWWNWWNWWNxcccccccccccccccccccccccccccccccclXWNNWNNWNNWNNWNNWNNWNNWW
NWWNNWNNWNNWNNWNNWWNWWXdcccccccccccccccccccccccccccccccccclKWWNWWNWWNWWNWWNWWNWWNN
WWNWWNWWNWWNWWNWWNWWNNdccccccccccccccccccccccccccccccccccccl0NWNNWNNWNNWNNWNNWNNWW
WWNWWNWWNWWNWWNWWNWWXoccccccccccccccccdx0Oxdlcccccccccccccccl0WNWWNNWNNWNNWNNWWNWW
NWWNWWNNWNNWNNWNNWWKlcccccccccccccclkXWWNWWNNOlcccccccccccccccOWWNWWNWWNWWNWWNWWNN
WWNWWNWWNWWNWWNWWNKlcccccccccccccclKNWWNWWNWWNXocccccccccccccccONWNNWNNWNNWNNWWNWW
WWNWWNWWNWWNWWNWW0lcccccccccccccclXNNWNNWWNWWNWNoccccccccccccccckWNNWNNWNNWNNWNNWW
NWWNNWNNWNNWNNWNkccccccccccccccccONWWNWWNWWNNWNNXccccccccccccccccdNWNWWNWWNWWNWWNN
WWNWWNWWNWWNWWNkcccccccccccccccclNWNNWWNWWNWWNWWNdcccccccccloolcccdNWNNWNNWNNWWNWW
WWNWWNWWNWWNWWxcccccccccccccccccoNWNNWWNWWNWWNWWNkcccccccccccoxO0OddNNNWNNWNNWNNWW
NWWNNWNNWNNWXdccccccccccccccccccoWNWWNWWNWWNNWNNWkcccccccccccccclxKNXWWNWWNWWNWWNN
WWNWWNWWNWWXoccccccccccccccccccccXWNNWWNWWNWWNWWNdcccccccccccccccccoOXNWNNWNNWWNWW
WWNWWNWWNWXocccccccccccccccldxk00XWNNWNNWWNWWNWWNK0kxdlcccccccccccccccxKNNWNNWNNWW
NWWNNWNNWKlccccccccccldxO0NWNWWNWWNWWNWWNWWNNWNNWNNWNNWXK0xdlccccccccccl0WNWWMMMMM
WWNWWNWWOccccccccoxOXNWNWWNWWNNWNNWNNWWNWWNWWNWWNWWNWWNWWNWWNKOxoccccccccOWNWMMMMM
WWNWWNWOcccccox0NNWWNWWNNWNNWNNWNNWNNWWNWWNWWNWWNWWNWWNWWNWWNNWNNN0xoccccckNNMMMMM
NWWNNWkccok0XNWNNWWNWWNWWNWWNWWNWWNWWNWWNWWNNWNNWNNWNNWNNWWNWWNWWNWWNN0xocckWNWWNW
WWNWNxdOXWWNWWNWWNWWNWWNWWNNWNNWNNWNNWWNWWNWWNWWNWWNWWNWWNWWNWWNWWNNWNNWNXOxxNNNWW
NWWNXNNNWNNWNNWNNWNNWWNWWNWWNWWNWWNWWNWWNWWNNWNNWNNWNNWNNWNNWWNWWNWWNWWNWWNWNXWWNN
image-20220109225418434
代码语言:javascript复制在 Linux 中使用 Jp2a 将图像转换为 ASCII 格式
你可以指定多个图像并一次性转换所有图像。
$ jp2a imgjpg imgjpg
此命令将给定的图像转换为 ASCII 并将它们一个接一个地显示出来。
就像我已经说过的,Jp2a 有很多选项和标志来操作输入图像。让我们通过示例来看看一些选项的用法。
从标准输入读取图像
代码语言:javascript复制要从标准输入读取图像并在标准输出中打印 ASCII 字符,请使用如下管道命令。
$ cat arch.jpg | jp2a -
注意最后的连字符 (-)。
将输出写入文件
代码语言:javascript复制你可以将其写入文件,而不是在标准输出中显示 ASCII 图像,如下所示。
$ jp2a arch.jpg --output=arch_ascii
此命令会将 ASCII 输出附加到名为
arch_ascii
的文本文件中。你可以使用cat命令查看文件的内容:
$ cat arch_ascii
image-20220109225615198
打印具有特定高度/宽度的图像
代码语言:javascript复制你可以将图像转换为 ASCII 格式并使用你选择的特定高度或宽度打印它们。
要使用特定高度(例如 30 行)打印,只需执行以下操作:
$ jp2a --height=30 arch.jpg
代码语言:javascript复制宽度将根据图像的纵横比自动计算。
同样,要指定宽度,请运行:
$ jp2a --weight=30 arch.jpg
代码语言:javascript复制你还可以组合这两个选项并打印图像。
$ jp2a --height=20 --width=40 arch.jpg
在 X 列和 Y 行中以 ASCII 格式打印图像
代码语言:javascript复制以下命令将给定的图像文件转换为 ASCII 并以 50 列和 30 行的形式打印输出。
$ jp2a --size=50x30 arch.jpg
输出:
image-20220109225658093
使用 Jp2a 在 X 列和 Y 行中以 ASCII 格式打印图像
将边框设置为 ASCII 字符
代码语言:javascript复制如果要在 ASCII 输出周围设置边框,请使用边框选项,如下所示:
$ jp2a --border --size=50x30 arch.jpg
输出:
image-20220109225746493
使用 Jp2a 将边框设置为 ASCII 字符
在浅色/深色背景中打印图像
代码语言:javascript复制Jp2a 具有在浅色和深色背景中打印 ASCII 字符的选项。
$ jp2a --background=light arch.jpg
代码语言:javascript复制$ jp2a --background=dark arch.jpg
使用 Jp2a 在浅色或深色背景中打印图像
image-20220109225830116
在深色背景中将图像打印成 ASCII 格式
代码语言:javascript复制如果你查看白色背景的图片,但你使用的是深色背景上带有浅色字符的显示器,你应该使用
反转
标志反转图像。
$ jp2a arch.jpg --invert
代码语言:javascript复制输出
. . . . . . . . . . . . . . . . . . .
:;
,oo;
.oooo'
.looooo.
.looooool.
cooooooool.
:ooooooooooc.
,ooooooooooooc.
,oooooooooooooo:
,oooooooooooooooo:
.;oooooooooooooooo:.
'c'. ,loooooooooooooo:
'ooooc,.,:oooooooooooooc.
'oooooooooc:cooooooooooooc.
,ooooooooooooooooooooooooooc
,ooooooooooooooooooooooooooooc.
,ooooooooooooooooooooooooooooooc.
;ooooooooooooooooooooooooooooooool.
.:ooooooooooooooooooooooooooooooooool.
:ooooooooooooooooooooooooooooooooooool.
.coooooooooooooooo:;.';:loooooooooooooool.
.looooooooooooool,. 'looooooooooooooo'
.looooooooooooool. .cooooooooooooooo'
.looooooooooooool. cooooooooooooooo,
,oooooooooooooooo' .oooooooooooooooo:
,ooooooooooooooool :ooooooooolcclooo:
;oooooooooooooooooc ,oooooooooooc;'.'::
.:ooooooooooooooooooc ,ooooooooooooool;. .
.coooooooooooooooooooo. :oooooooooooooooooc'.
.coooooooooooooool:;,... ..,;:looooooooooooooo;.
.looooooooool:;'. ...;:looooooooool.
'ooooooooc;'. .';coooooooo'
'oooooc;. .;cooooo,
,ooc,.. .;coo,
;:'. .';;
. .
image-20220109225906934
使用 Jp2a 将图像转换为带有反转选项的 ASCII 格式
仅打印带有特定字符的图像
代码语言:javascript复制你可以使用你选择的一些自定义字符,而不是使用默认字符打印图像。
$ jp2a --size=50x30 --chars=" ...sskk@@" arch.jpg
直接从 Internet 下载图像
代码语言:javascript复制不只是本地图像,还可以直接从 Internet 下载图像并将其转换为 ASCII。
要直接从 Internet 下载图像并以 ASCII 格式打印,请运行:
$ jp2a --size=50x30 https://upload.wikimedia.org/wikipedia/commons/d/dd/Linux_logo.jpg
image-20220109225945351
代码语言:javascript复制使用 Jp2a 直接从 Internet 下载图像
或者,使用
curl
或wget
程序下载图像,jp2a 将从标准输入读取图像,如下所示。
$ curl -s https://upload.wikimedia.org/wikipedia/commons/d/dd/Linux_logo.jpg | jp2a -
转换 JPG/JPEG 以外的图像
代码语言:javascript复制如果你有除 JPG/JPEG 以外的其他图像类型怎么办?在这种情况下,你可以使用
ImageMagick 的转换
工具,如下所示。ImageMagick 在许多 Linux 发行版的默认存储库中可用。在 Arch Linux 及其变体如 Manjaro Linux 上:
$ sudo pacman -S imagemagick
代码语言:javascript复制在 Debian、Ubuntu、Linux Mint 上:
$ sudo apt install imagemagick
代码语言:javascript复制安装 ImageMagick 后,运行以下命令将给定的 PNG 格式图像转换为 Jpeg/Jpg 格式,然后再转换为 ASCII 格式:
$ convert arch.png jpg:- | jp2a -
image-20220109230049035
请注意末尾的连字符 (-)。
使用 Jp2a 将 PNG 图像转换为 ASCII
同样,你可以简单地将任何图像格式转换为 JPEG/JPG,然后再将其转换为 ASCII 格式。
产生严格的 HTML 输出
代码语言:javascript复制Jp2a 可以选择生成严格的 XHTML 1.0 输出。
$ jp2a --size=50x30 `--html` arch.jpg --output=arch.html
代码语言:javascript复制输出:
<!DOCTYPE html>
<html>
<head>
<title>jp2a converted image</title>
<style type='text/css'>
body {
background-color: black;
}
.ascii {
font-family: Courier;
color: white;
font-size:8pt;
font-weight: bold;
}
</style>
</head>
<body>
<div class='ascii'><pre>
MNWNWNWWNWNWNMXMNWNWNWWNNXWNWXMXWNWNWNNWNWNWXMXWNW
NWNWNWWWWNWNWNWNWNWNWWWWkkNWNWNWNWNWWWWWWNWNWNWNWN
NWNWNWWWWWWNWNWNWNWNWWWKccKWNWNWNWNWWWWWWNWNWNWNWN
NWNWNWWWWWWNWNWNWNWNWWNoccoNNWNWNWNWWWWWWNWNWNWNWN
WNWNWWWWWWNWNWNWNWNWWWOcccckWNWNWNWNWWWWNWNWNWNWNW
WNWNWWWWNWNWNWNWNWNWWXlcccccKNWNWNWNWWWWNWNWNWNWNW
WNWWWWWWWWNWNWNWNWWWNdcccccclNWNWNWWWWWWWWNWNWNWNW
NWNWNWWWWNWNWNWNWNWNOccccccccxNWNWNWWWWWWNWNWNWNWN
NWNWNWWWWWWNWNWNWNWXlccccccccc0WNWNWWWWWWNWNWNWNWN
WWWWWWWWWWWWWWWWWWNNkccccccccclXWWWWWWWWWWWWWWWWWW
WNWNWWWWNWNWNWNWNWxlkKdccccccccoNNWNWWWWNWNWNWNWNW
WNWNWWWWWWNWNWNWNOccccddocccccccxNWNWWWWNWNWNWNWNW
WWWWWWWWWWWWWWWWKccccccccccccccccOWWWWWWWWWWWWWWWW
NWNWNWWWWNWNWNWXlcccccccccccccccccKWWWWWWNWNWNWNWN
NWNWNWWWWNWNWNNdcccccccccccccccccclXNWWWWNWNWNWNWN
WWWWWWWWWWWWWWxccccccccccccccccccccdNWWWWWWWWWWWWW
WNWNWWWWWWNWNOccccccccccccccccccccccxNWWNWNWNWNWNW
WNWNWWWWWWNWKccccccccclx0OklcccccccccOWWNWNWNWNWNW
WWWWWWWWWWWXlccccccccoXWWWWXdccccccccc0WWWWWWWWWWW
NWNWNWWWWNNocccccccclNWWNWNWNocccccccclXWNWNWNWNWN
NWNWNWWWWNdcccccccccOWWWNWNWNKcccccccccoNNWNWNWNWN
WWWWWWWWNxccccccccccXWWWWWWWWNlcccccldlcoNWWWWWWWW
WNWNWWWWOcccccccccccNWWWWNWNWNocccccccx0O0NWNWNWNW
WNWNWWW0ccccccccccccXWWWWNWNWNlcccccccccdKNWNWNWNW
NWNWNWKlcccccccccodkXWWWNWNWNNkdocccccccccdKWNWNWN
NWNWNXlccccccdk0NNWNWWWWNWNWNWNWNN0kdcccccclXNWMMM
NWNWNoccclx0NNWNWNWNWWWWNWNWNWNWNWNWWN0xlccclXWMMM
WNWNdclkKNNWNWNWNWNWWWWWWNWNWNWNWNWWWWWWNKklcdNWMW
WNWkxKNWWWNWNWNWNWNWWWWWWNWNWNWNWNWNWWWWNWNWKxkWNW
NWXNNWWNWNWNWNWNWNWNWWNWNWNWNWNWNWNWNWWNWNWNWNNNWN
</pre>
</div>
</body>
</html>
当你想在 Web 浏览器中查看图像的 ASCII 字符时,这会很有用。
使用 Jp2a 生成严格的 HTML 输出
还有更多选项可用,例如在 X 和 Y 方向翻转图像,将 RGB 设置为灰度转换权重,在输出中使用 ANSI 颜色,使用终端显示高度/宽度等。查看帮助部分或手册页以了解使用它们。