10个版本 (5个破坏性更新)
0.6.0 | 2024年7月8日 |
---|---|
0.5.1 | 2024年7月6日 |
0.4.6 | 2024年6月20日 |
0.4.1 | 2024年3月16日 |
0.1.1 | 2022年5月31日 |
#538 in 文本处理
42KB
851 行
ascii-image
将图像和GIF转换为ASCII艺术。
安装
从源代码安装
您需要安装 Rust 才能从源代码安装此程序。安装Rust后,安装步骤简单
cargo install image-to-ascii
预编译的二进制文件
您可以从GitHub上的发布部分下载相应的预编译二进制文件。目前,二进制文件为最新的Ubuntu、Windows和MacOS版本构建。
用法
以下是一些在不同输入和输出格式之间转换的示例
image-to-ascii input_image.jpg
image-to-ascii input_image.gif -o output_image.gif
image-to-ascii input_image.jpeg -o output_image.png --width 200
image-to-ascii input_image.gif -o output_image.gif --metric dot --font bitocra-13 --alphabet minimal
image-to-ascii input_image.gif -o output_image.json --metric grad --font fonts/courier.bdf --alphabet alphabets/letters.txt --conversion-algorithm base
输入
应支持所有由 image 可读的图像格式作为输入,并会自动从输入文件名检测。动画.gif文件也可以用作输入;如果输出格式是.gif或.json,输出也将是动画的。已测试与.gif、.png、.jpg、.bmp、.svg和.json文件格式兼容。
输出
应支持所有由 image 可写的图像格式作为输出,并会自动从输出文件名检测。如果输出格式是.json且输入格式是动画gif,您可以通过打开viewer.html来预览动画结果。如果没有提供输出文件,输出将直接在终端中显示;请注意,大多数终端都不是为跟上此程序输出文本的速度而设计的,因此终端输出可能会相当断断续续。
字体
此程序与点阵字体.bdf格式一起工作。如果您想使用除默认字体以外的字体,您可以在此处找到大量免费点阵字体。
参数
<IMAGE_PATH>
输入图像文件的路径。如果输入文件是图像,输出将是静态图像。如果输入是.gif,则输出将是动画。已测试与.gif、.png、.jpg、.bmp、.svg和.json文件格式兼容。
-a, --alphabet [默认: alphabet]
指定要使用的字母表的名称或路径。提供的字体必须为提供的字母表中的每个字符提供符号。有效的字母表名称包括
-b, --brightness-offset <BRIGHTNESS_OFFSET> [默认: 0, 最小: 0, 最大: 255]
从图像的每个灰度像素中减去的量,在计算字符相似度之前。在大多数情况下,亮度偏移量为0通常是合适的。对于使用某些度量标准(点、杰卡德、遮挡和清晰)的黑白输出,较亮图像通常在高亮度偏移量下看起来更好。
-f, --font <FONT> [默认: bitocra-13]
指定要使用的字体名称或路径。提供的字体必须是.bdf格式的等宽字体,并且必须为提供的字母表中的每个字符提供一个符号。有效的字体名称是
--fps [默认: 30]
用于gif或终端输出的帧率。对于gif输出,最大fps为30。
-h, --help 打印帮助信息
-m, --metric [默认: direction-and-intensity]
用于确定哪个字符最适合图像特定片段的度量的度量。有效值是
- intensity:片段的亮度与字符位图亮度的接近程度
- intensity的同义词
- direction:片段像素的方向与字符位图总体方向相似程度
- direction-and-intensity:片段的方向和强度与字符位图值相似程度
- grad:direction-and-intensity的同义词
- dot:片段像素值和字符位图值之间的点积
- jaccard:片段像素值和字符位图值之间的加权杰卡德指数
- occlusion:片段被字符位图“遮挡”的程度,或反之
- clear:字体从片段中清除的程度
--no-color
使输出为黑白。适用于不支持彩色输出的环境,例如某些终端、某些编辑器或文本环境等。
--conversion-algorithm <CONVERSION_ALGORITHM> [默认: edge-augmented]
用于将像素转换为字符的算法。有效值是
- base:仅使用提供的度量标准转换像素
- edge:执行边缘检测,然后使用方向度量标准转换检测到的图像边缘
- edge-augmented:将原始图像与边缘检测层结合,然后对增强图像应用提供的度量标准
- two-pass:使用方向度量标准转换检测到的图像边缘,然后使用提供的度量标准转换任何非边缘像素
-o, --out-path <OUT_PATH>
写入输出的路径。如果没有提供值,输出将在控制台显示。已测试可与.gif、.png、.jpg、.bmp、.svg和.json文件格式一起使用。任何gif查看器都可以显示.gif输出,并且可以使用viewer.html显示.json gif输出。
-w, --width [默认: 图像宽度以字符为单位]
最终输出的字符宽度。将尽可能保持宽高比,同时使输出宽度和高度为字体宽度和高度的倍数。如果没有提供值,将使用图像宽度以字符为单位,并向上取整到下一个整数。
依赖关系
~10–23MB
~240K SLoC