1 个不稳定版本
0.0.1 | 2021 年 5 月 13 日 |
---|
#24 在 #capturing
18KB
291 行
imagesnap
macOS 上捕获图像的 CLI 工具 📷 📸 🖼️
该软件包同时也是一个 Rust 库。🦀
安装
通过 Homebrew
brew install smudge/smudge/imagesnap
通过 Cargo
设置 Rust/Cargo 并运行以下命令从 crates.io 安装
cargo install imagesnap
用法
命令行界面
不带任何参数运行命令,将输出从默认相机捕获的 snapshot.jpg
$ imagesnap
Capturing image from device "iSight"..................snapshot.jpg
可以通过指定参数更改文件名。目前仅支持 JPG 文件
$ imagesnap shot1.jpg
Capturing image from device "iSight"..................shot1.jpg
使用 -l
标志列出所有可用的图像捕获设备
$ imagesnap -l
iSight
DV
使用 -d
标志使用特定设备
$ imagesnap -d DV
Capturing image from device "DV"..................snapshot.jpg
使用 -w
标志指定预热时间(默认为 0.5),允许相机在拍摄前进行光线平衡和/或对焦
$ imagesnap -w 2.5
Capturing image from device "iSight"...........................snapshot.jpg
使用 -q
标志静默状态和进度输出。
最后,使用 -h
/--help
运行命令以查看用法说明。
Rust API
除了 CLI,imagesnap
还可以作为一个依赖项被其他 Rust 软件包引入
imagesnap = "0.0.1"
要使用默认相机捕获图像,请使用 Camera::default
let camera = Camera::default();
camera.snap("snapshot.jpg").await;
请注意,snap
是一个 async
函数。
如果连接了多个相机,请使用 Camera::new
并指定一个设备
let camera = Camera::new(Device::find("FaceTime"), None);
要发现所有设备,请使用 Device::all()
。
也可以指定一个可选的预热时间(以秒为单位)
let camera = Camera::new(Device::default(), 1.5);
如果未指定,则默认为 0.5 秒。
待办事项
- 基本功能正常工作(将图像捕获到文件)
- 添加额外的选项,如 'quiet' 和 'warmup'
- 使设备选择功能正常工作
- 清理代码,工作于通用库接口
- 更新 README 以包含库用法
- 支持其他文件类型吗?(png、tif 等?)
- 增加Linux支持(通过
rscam
) - 增加Windows支持(通过
escapi
) - 使STDOUT和管道检测在macOS/Linux上工作
鸣谢
- Robert Harder 提供了原始的 imagesnap CLI
- Rust objc crate 的维护者
- Carol Nichols 和 Steve Klabnik 为 Rust 编写的 官方书籍
贡献
- 检查问题跟踪器并考虑创建新的问题。
- 对该项目进行Fork并创建一个新分支以贡献。
- 在您的分支上编写、提交和推送您的贡献。
- 确保项目可以构建(
cargo build
)并且功能仍然按预期工作。 - 提交一个pull请求。
许可证
根据您的要求,许可以下任一项
- Apache License, Version 2.0, (LICENSE-APACHE)
- MIT 许可证 (LICENSE-MIT)
。
除非您明确声明,否则根据Apache-2.0许可证定义的,您有意提交的包含在作品中的任何贡献,都应如上所述双重许可,不得附加任何额外条款或条件。
依赖
~1–1.7MB
~29K SLoC