5 个版本
0.1.4 | 2023年3月21日 |
---|---|
0.1.3 | 2023年3月18日 |
0.1.2 | 2023年2月19日 |
0.1.1 | 2023年2月19日 |
0.1.0 | 2023年2月19日 |
在 图形API 中排名第271
38KB
794 行
PIC 📷
PIC (Preview Image in CLI ) 是一个轻量级的 Rust 工具,可在您的终端中预览图像!
支持各种图像协议(Kitty
、Sixel
、iTerm
),在多个终端中工作,并在您的终端不受支持的情况下仍可使用 Unicode 块。PIC 还提供库供您在自己的工具中使用!
功能
- 选择您喜欢的协议
- Kitty 图形,具有多个操作(
load
/clear
) - Sixel,在许多终端中工作
- iTerm,非常出色地显示 GIF
- 其他情况下使用 Unicode 块和真彩色/ansi256 支持
- Kitty 图形,具有多个操作(
- 自定义
--x
和--y
选项来选择显示图像的位置--cols
和--rows
选项来选择图像的大小(始终尝试保持比例)--upscale
选项在需要时以所需的完整大小预览图像--static
和--loop
选项用于与 GIF 交互--protocol
选项用于选择协议--load
、--display
和--clear
选项用于与 Kitty 协议交互
安装
从源代码(推荐)
先决条件
命令行说明
# Clone the repository
git clone https://github.com/emsquid/pic
# Build and install
cargo install --path pic
# Use freely
pic Images/YourFavouriteImage.png --cols 13 ...
从 Cargo
先决条件
命令行说明
# Build and install
cargo install pic
# Use freely again
pic Images/YourFavouriteImage.png --cols 13 ...
作为库
先决条件
命令行说明
# Add the dependency in your project directory
cargo add pic
示例
块和高质量的预览
广泛的选项选择
在 iTerm 中显示非常出色的 GIF
在 Blocks 中也显示得很好
命令行用法
Preview Image in CLI.
Usage: pic [OPTIONS] [PATH]...
Arguments:
[PATH]... Image(s) to preview
Options:
-p, --protocol <PROTOCOL> Previewing protocol to use [possible values: kitty, sixel, iterm, blocks]
-x, --x <X> x position (0 is left)
-y, --y <Y> y position (0 is top)
-c, --cols <COLS> Number of cols to fit the preview in
-r, --rows <ROWS> Number of rows to fit the preview in
--spacing <SPACING> Spacing between images if more than one file is provided
-u, --upscale Upscale image if needed
-n, --no-newline Don't print newline after preview
-s, --static Only show first frame of GIFs
-l, --loop Loop GIFs infinitely
--load <ID> Load image with the given id (kitty only)
--display <ID> Display image with the given id (kitty only)
--clear <ID> Clear image with the given id (0 for all) (kitty only)
-h, --help Print help
-V, --version Print version
库用法
use pic
fn main() {
// Choose images to preview
let path1 = std::path::PathBuf::from("Picture/MyFavImage.png");
let mut options = pic::options::Options::new(vec![path1]);
// Set your options
options.set_position(Some(10), None);
options.set_size(Some(50), Some(50));
options.upscale();
// Preview
if let Err(err) = pic::previewer::preview(&mut std::io::stdout(), &mut options) {
eprintln!("{err}");
};
}
注意
Sixel
协议可能需要安装 libsixeliTerm
协议总是循环播放 GIF,除非指定了--static
进度
非常感谢帮助
- 文档
- 编写更好的 README
- 制作发布版本/包(在 crates.io 上发布)
- 协议支持
- 使用 Kitty 协议预览 GIF
- 使用 Unicode 块预览 GIF
- 处理透明度/GIF 的 Sixel 协议(GIF 可以工作但渲染效果不佳)
- 改进协议支持检查(需要在各种终端中进行测试)
- 杂项
- 以某种方式实现缓存
- 显示更酷的错误信息
- 编写测试(我想我需要这么做...)
依赖项
~23–33MB
~283K SLoC