本指南介绍如何在 Linux 中将图像转换为 ASCII 格式。 出于此任务的目的,我们将使用 JP2a. Jp2a 是一个命令行工具,可帮助您将给定的图像转换为 ascii 字符格式。 您可以指定图像文件和 URL 的混合,Jp2a 工具会立即将它们全部转换为 ascii 字符。 Jp2a 有许多有用的选项来处理图像。 以下是 Jp2a 可以为您做的一些事情!
- 从标准输入读取图像,
- 将背景模式设置为浅色或深色,
- 设置边框,
- 设置输出高度和宽度,
- 为输出图像设置自定义尺寸,
- 垂直或水平翻转输出图像,
- 在生成输出 ASCII 图像时使用特定字符,
- 反转图像,
- 从网上下载图像并转换它们,
- 还有很多。
在 Linux 中安装 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
在 Linux 中将图像转换为 ASCII 格式
要将给定的 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
很简单,不是吗?
您可以指定多个图像并一次性转换所有图像。
$ jp2a img1.jpg img2.jpg
此命令将给定的图像转换为 ASCII 并将它们一个接一个地显示出来。
就像我已经说过的,Jp2a 有很多选项和标志来操作输入图像。 让我们通过示例来看看一些选项的用法。
从标准输入读取图像
要从标准输入读取图像并在标准输出中打印 ASCII 字符,请使用 管道 命令如下。
$ cat arch.jpg | jp2a -
注意最后的连字符 (-)。
将输出写入文件
您可以将其写入文件,而不是在标准输出中显示 ASCII 图像,如下所示。
$ jp2a arch.jpg --output=arch_ascii
此命令会将 ASCII 输出附加到名为的文本文件中 arch_ascii. 您可以使用“cat”命令查看文件的内容:
$ cat arch_ascii
打印具有特定高度/宽度的图像
您可以将图像转换为 ASCII 格式并使用您选择的特定高度或宽度打印它们。
要使用特定高度打印,对于 example 30 行,只需执行以下操作:
$ jp2a --height=30 arch.jpg
宽度将根据图像的纵横比自动计算。
同样,要指定宽度,请运行:
$ jp2a --weight=30 arch.jpg
您还可以组合这两个选项并打印图像。
$ jp2a --height=20 --width=40 arch.jpg
在 X 列和 Y 行中以 ASCII 格式打印图像
以下命令将给定的图像文件转换为 ASCII 并以 50 列和 30 行的形式打印输出。
$ jp2a --size=50x30 arch.jpg
样本输出:
将边框设置为 ASCII 字符
如果要在 ASCII 输出周围设置边框,请使用 边界 选项如下:
$ jp2a --border --size=50x30 arch.jpg
样本输出:
在浅色/深色背景中打印图像
Jp2a 具有在浅色和深色背景中打印 ASCII 字符的选项。
$ jp2a --background=light arch.jpg
$ jp2a --background=dark arch.jpg
在深色背景中将图像打印成 ASCII 格式
如果您查看白色背景的图片,但您使用的是深色背景上带有浅色字符的显示器,您应该使用 倒置 旗帜。
$ 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 --size=50x30 --chars=" [email protected]@" arch.jpg
直接从 Internet 下载图像
不只是本地图像,还可以直接从 Internet 下载图像并将其转换为 ASCII。
要直接从 Internet 下载图像并以 ASCII 格式打印,请运行:
$ jp2a --size=50x30 https://upload.wikimedia.org/wikipedia/commons/d/dd/Linux_logo.jpg
或者,使用 curl 或者 wget 下载图像的程序和 jp2a 将从标准输入读取图像,如下所示。
$ 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 上:
$ sudo pacman -S imagemagick
在 Debian、Ubuntu、Linux Mint 上:
$ sudo apt install imagemagick
安装 ImageMagick 后,运行以下命令将给定的 PNG 格式图像转换为 Jpeg/Jpg 格式,然后再转换为 ASCII 格式:
$ convert arch.png jpg:- | jp2a -
请注意末尾的连字符 (-)。
同样,您可以简单地将任何图像格式转换为 JPEG/JPG,然后再将其转换为 ASCII 格式。
产生严格的 HTML 输出
Jp2a 可以选择生成严格的 XHTML 1.0 输出。
$ jp2a --size=50x30 --html arch.jpg --output=arch.html
样本输出:
<?xml version='1.0' encoding='ISO-8859-1'?> <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'> <html xmlns="https://www.w3.org/1999/xhtml" lang='en' xml:lang='en'> <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 字符时,这会很有用。
还有一些可用的选项,例如在 X 和 Y 方向翻转图像,将 RGB 设置为灰度转换权重,在输出中使用 ANSI 颜色,使用终端显示高度/宽度等。查看帮助部分或手册页以了解使用它们。
如需帮助,请运行:
$ jp2a --help
$ man jp2a
建议阅读:
- 如何在 Linux 中从图像创建蒙太奇
感谢您的光临!
帮助我们帮助您:
- 订阅我们的电子邮件通讯: 立即注册
- 支持 OSTechNix: 通过贝宝捐款
- 下载免费的电子书和视频: TradePub 上的 OSTechNix
- 联系我们: 红迪网 | Facebook | Twitter | 领英 | RSS订阅
祝你有美好的一天!!