#ascii-art #convert-images #ascii #ascii-text #image-format #terminal #text

bin+lib artem

将多种格式的图像(jpg, png, webp 等…)转换为 ASCII 艺术作品

16 个稳定版本 (3 个主要版本)

3.0.0 2024 年 3 月 27 日
2.0.6 2024 年 2 月 13 日
2.0.2 2023 年 8 月 24 日
2.0.0 2023 年 7 月 23 日
0.6.1 2022 年 3 月 27 日

#122命令行工具

Download history 19/week @ 2024-04-08 26/week @ 2024-04-15 36/week @ 2024-04-22 29/week @ 2024-04-29 24/week @ 2024-05-06 17/week @ 2024-05-13 40/week @ 2024-05-20 20/week @ 2024-05-27 48/week @ 2024-06-03 38/week @ 2024-06-10 38/week @ 2024-06-17 34/week @ 2024-06-24 47/week @ 2024-07-01 13/week @ 2024-07-08 21/week @ 2024-07-15 51/week @ 2024-07-22

136 每月下载量
用于 clp

MPL-2.0 许可证

120KB
2K SLoC

artem crate Terminal Continuous Integration maintenance-status License: MPL 2.0

Artem

Artem 是一个小型命令行程序,用 Rust 编写,可以轻松地将图像转换为 ASCII 艺术作品,其名称来源于拉丁语中的“艺术”。默认情况下,它尝试使用真彩色,如果终端不支持真彩色,则回退到 16 色ANSI。当 ASCII 图像写入文件时,将不会使用颜色。它支持 .jpeg.png.gif.webp 以及更多。

如果您想将此项目作为库使用,请参阅 文档

维护

此项目仍在维护中吗?

是的。尽管目前没有新功能开发,但会继续处理问题和新的功能请求。如果您有任何问题或对新功能有任何想法,请 创建一个问题

示例

输入

来源: https://upload.wikimedia.org/wikipedia/commons/4/44/Abraham_Lincoln_head_on_shoulders_photo_portrait.jpg Abraham Lincoln

输出

Abraham Lincoln

用法

用于简单转换图像

artem path

输入可以是单个或多个文件路径或 URL。

注意:要使用 URL,必须启用 web_image 功能。默认情况下已启用。

要使用更多选项,请使用

artem --help

要使用自定义的ASCII字符,请使用--characters参数(或简写为-c)。字符应按从最暗/最密集到最亮排序。如果背景应该是不可见的,请在其后添加一个空格。或者,此程序已经预定义了3个字符集,可以通过提供--characters参数以及预设编号(012)来访问。默认情况下使用预设1

artem PATH --characters "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789<>|,.-#+!$%&/()=?*'_:; "

要更改转换图像显示的大小,请使用

#for auto sizing height
artem PATH --height
#for auto-sizing width
artem PATH --width
#for manual resizing use the --size flag
artem PATH --size 100

也可以使用以下方法来居中图像

#center the image horizontally
artem PATH --centerX
#center the image vertically
artem PATH --centerY

要保存图像到文件,请使用--output标志。

artem PATH --output ascii.txt
#if the output file is an html file, the resulting ascii art will be saved as html ascii art, which supports colors
artem PATH --output ascii.html
# or alternatively, use an .asn file for colored ascii text
artem PATH --output ascii.ans

使用--outline标志,将过滤给定的输入图像,使其只包含轮廓,然后进行转换。请注意,这可能会花费一些额外的时间,并且可能不是在每张图像上都能完美工作。为了获得最佳结果,请使用背景和前景之间有清晰区别的图像。

artem PATH --outline

为了获得更好的结果,可能值得尝试使用--hysteresis/--hys标志,可能还需要使用更适合轮廓的字符。

artem PATH --outline --hysteresis --characters "|/\_.  "

安装

安装artem的最简单方法是通过cargo进行

cargo install artem

它将自动将artem添加到您的PATH变量中,因此可以像在使用部分中所示的那样使用。

如果未安装cargo,请访问cargo书籍以获取安装说明。

Linux

基于Debian的发行版(例如Ubuntu)

对于基于Debian的发行版,如Ubuntu,请从发布页面下载.deb文件,并用以下命令安装:

sudo dpkg -i artem.deb

.deb软件包还包含tab补全(适用于bash、zsh和fish)和man页面。

基于Archlinux的发行版

artem作为AUR软件包可用。您可以使用您喜欢的aur助手安装它,例如使用yay

yay -S artem

这将从源代码构建它。或者,它也提供预编译的二进制文件(artem-bin)。

yay -S artem-bin

其他发行版

在其他发行版上使用发布标签中提供的二进制文件。

或者,如果已安装brew,您也可以使用brew安装它。有关更多信息,请参阅MacOS Homebrew部分

MacOS

使用Homebrew

警告 由于与Homebrew合作的困难,现在不再推荐通过Homebrew安装artem。如果您希望维护此tap,请与我联系。

brew install finefindus/tap/artem

homebrew版本还有额外的优势,即安装man页面和bash、zsh和fish的tab补全。

二进制文件

或者,在发布标签中提供了二进制文件(适用于x86_64和Arm)。不建议使用这种方法安装,而不是使用cargo

Windows

要安装Windows版本,不使用cargo,请从发行标签下载gnu或mscv编译的.zip文件,并解压.exe文件。需要注意的是,您需要手动将.exe添加到PATH变量中。

Shell 完成功能

artem 提供了shell完成功能和man页面。当使用homebrew版本、.deb软件包或aur版本时,它们会自动安装,而对于使用具有shell完成功能的二进制文件,压缩发行文件中的完成文件需要复制到正确的位置。假设压缩文件已解压,请使用以下命令将文件复制到Unix-like系统的正确位置:

Shell 完成功能和man页面

对于 bash

#copy the bash completion file
sudo cp completions/artem.bash  /etc/bash_completion.d/

对于 zsh,将文件添加到$fpath目录

#copy the zsh completion file
cp completions/_artem $fpath

对于 fish,将文件添加到fish完成功能目录

#copy the fish completion file
cp completions/artem.fish $HOME/.config/fish/completions/

对于 Windows,将. /path/to/_artem.ps1(包括点)添加到PowerShell 配置文件

man页面

artem 还在doc目录中提供了二进制发行版的man页面。要使用man-l标志查看本地文件。

#view the local man page
man -l doc/artem.1

从源代码构建

假设您已安装rust/cargo,可以使用以下命令构建项目:

cargo build --release

--release标志禁用调试选项,提高性能。

如果未安装rust,请访问rust主页获取安装说明。

功能

这将禁用默认功能,同时启用所有其他指定功能

cargo build --release --no-default-features --features FEATURES

有关功能使用方法的更多信息,请参阅cargo手册

目前有以下功能可用:

  • web_image 接受图像URL作为输入(默认启用)

贡献

欢迎拉取请求。对于重大更改,请先打开一个问题来讨论您想进行哪些更改。请注意,可能需要一些时间才能得到回复。

致谢/灵感

该项目受到了jp2a以及关于ASCII艺术的编码列车视频的极大启发。

还要感谢ripgrep间接帮助灵感的构建设置。

以下图像用于测试/示例

待办事项

  • 更好地平均多个像素的RGB值

  • 使用当前终端大小自动调整图像

  • 支持ANSI终端颜色

  • 将输出转换为彩色HTML

  • 使用多线程

  • 添加测试

  • 添加更多测试

  • 一次转换多个文件

  • 从OUT_DIR自动复制完成文件到部署/资产

  • 更改名称

  • 发布

潜在想法

  • 使用边缘检测和方向ASCII

  • 实现更好的缩放

许可

Mozilla 公共许可证 2.0。

依赖项

~6–18MB
~202K SLoC