【Linux常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。
本指南介绍如何在 Linux 中将图像转换为 ASCII 格式。我们将使用
Jp2a
。Jp2a 是一个命令行工具,可帮助你将给定的图像转换为 ascii 字符格式。你可以指定图像文件和 URL 的混合,Jp2a 工具会立即将它们全部转换为 ascii 字符。Jp2a 有许多有用的选项来处理图像。
Jp2a 被打包用于许多 Linux 发行版,并且在默认存储库中可用。
要在 Arch Linux 及其变体如 Manjaro Linux 上安装 Jp2a,请运行:
$ sudo pacman -S jp2a
在 Debian、Ubuntu、Linux mint 上:
$ sudo apt install jp2a
在 Fedora 上:
$ sudo dnf install jp2a
在 CentOS / RHEL 上:
$ sudo yum install epel-release
$ sudo yum install jp2a
在 openSUSE 上:
$ sudo zypper install jp2a
要将给定的 JPG/JPEG 图像转换为 ASCII 字符格式,只需运行:
jp2a <path-to-image>
$ jp2a arch.jpg
输出
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
在 Linux 中使用 Jp2a 将图像转换为 ASCII 格式
你可以指定多个图像并一次性转换所有图像。
$ jp2a imgjpg imgjpg
此命令将给定的图像转换为 ASCII 并将它们一个接一个地显示出来。
就像我已经说过的,Jp2a 有很多选项和标志来操作输入图像。让我们通过示例来看看一些选项的用法。
要从标准输入读取图像并在标准输出中打印 ASCII 字符,请使用如下管道命令。
$ cat arch.jpg | jp2a -
注意最后的连字符 (-)。
你可以将其写入文件,而不是在标准输出中显示 ASCII 图像,如下所示。
$ jp2a arch.jpg --output=arch_ascii
此命令会将 ASCII 输出附加到名为
arch_ascii
的文本文件中。你可以使用cat命令查看文件的内容:
$ cat arch_ascii
你可以将图像转换为 ASCII 格式并使用你选择的特定高度或宽度打印它们。
要使用特定高度(例如 30 行)打印,只需执行以下操作:
$ jp2a --height=30 arch.jpg
宽度将根据图像的纵横比自动计算。
同样,要指定宽度,请运行:
$ jp2a --weight=30 arch.jpg
你还可以组合这两个选项并打印图像。
$ jp2a --height=20 --width=40 arch.jpg
以下命令将给定的图像文件转换为 ASCII 并以 50 列和 30 行的形式打印输出。
$ jp2a --size=50x30 arch.jpg
输出:
使用 Jp2a 在 X 列和 Y 行中以 ASCII 格式打印图像
如果要在 ASCII 输出周围设置边框,请使用边框选项,如下所示:
$ jp2a --border --size=50x30 arch.jpg
输出:
使用 Jp2a 将边框设置为 ASCII 字符
Jp2a 具有在浅色和深色背景中打印 ASCII 字符的选项。
$ jp2a --background=light arch.jpg
$ jp2a --background=dark arch.jpg
使用 Jp2a 在浅色或深色背景中打印图像
如果你查看白色背景的图片,但你使用的是深色背景上带有浅色字符的显示器,你应该使用
反转
标志反转图像。
$ jp2a arch.jpg --invert
输出
. . . . . . . . . . . . . . . . . . .
:;
,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,
;:'. .';;
. .
使用 Jp2a 将图像转换为带有反转选项的 ASCII 格式
你可以使用你选择的一些自定义字符,而不是使用默认字符打印图像。
$ jp2a --size=50x30 --chars=" ...sskk@@" arch.jpg
不只是本地图像,还可以直接从 Internet 下载图像并将其转换为 ASCII。
要直接从 Internet 下载图像并以 ASCII 格式打印,请运行:
$ jp2a --size=50x30 https://upload.wikimedia.org/wikipedia/commons/d/dd/Linux_logo.jpg
使用 Jp2a 直接从 Internet 下载图像
或者,使用
curl
或wget
程序下载图像,jp2a 将从标准输入读取图像,如下所示。
$ curl -s https://upload.wikimedia.org/wikipedia/commons/d/dd/Linux_logo.jpg | jp2a -
如果你有除 JPG/JPEG 以外的其他图像类型怎么办?在这种情况下,你可以使用
ImageMagick 的转换
工具,如下所示。ImageMagick 在许多 Linux 发行版的默认存储库中可用。在 Arch Linux 及其变体如 Manjaro Linux 上:
$ sudo pacman -S imagemagick
在 Debian、Ubuntu、Linux Mint 上:
$ sudo apt install imagemagick
安装 ImageMagick 后,运行以下命令将给定的 PNG 格式图像转换为 Jpeg/Jpg 格式,然后再转换为 ASCII 格式:
$ convert arch.png jpg:- | jp2a -
请注意末尾的连字符 (-)。
使用 Jp2a 将 PNG 图像转换为 ASCII
同样,你可以简单地将任何图像格式转换为 JPEG/JPG,然后再将其转换为 ASCII 格式。
Jp2a 可以选择生成严格的 XHTML 1.0 输出。
$ jp2a --size=50x30 `--html` arch.jpg --output=arch.html
输出:
<!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 颜色,使用终端显示高度/宽度等。查看帮助部分或手册页以了解使用它们。
【Linux常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。