24个稳定版本 (3个主要版本)
新版本 3.3.1 | 2024年8月23日 |
---|---|
3.3.0 | 2024年5月22日 |
3.2.3 | 2023年9月1日 |
3.2.1 | 2023年5月9日 |
0.3.1 | 2022年8月18日 |
1 in #camera-image
每月100次下载
105KB
2.5K SLoC
GPhoto2-rs
Rust对libgphoto2的绑定
关于gphoto-rs呢?
我知道其他crate(gphoto和gphoto2-sys由@dcuddeback创建,但它缺少许多功能,使我无法使用这个crate,最显著的是更改相机设置和在内存中下载文件的能力。
作者自2017年以来一直不活跃,尽管有多次pull和功能请求,所以我创建了一个新的项目,它具有更现代的rust代码和libgphoto2的所有功能。
功能
- 相机
- 捕获图像
- 捕获预览图像
- 下载图像
- 获取端口信息
- 获取能力(型号、驱动程序稳定性、权限等)
- 读取配置
- 设置配置
- 与相机上的文件系统交互
- 相机事件
- USB端口信息
- 上下文
- 自动检测相机
- 获取可用相机的列表
- 通过型号和端口获取相机
入门
安装
运行 cargo add gphoto2
将gphoto2添加到您的项目中或将其添加到您的 Cargo.toml
[dependencies]
gphoto2 = "3.3"
安装libgphoto2
要在您的系统上使用此库,必须安装libgphoto2
库。
要在基于Debian的系统上安装libgphoto2,请运行
sudo apt install libgphoto2-dev
在Arch系统上运行
sudo pacman -S libgphoto2
在MacOS系统上使用Homebrew运行
homebrew install libgphoto2
Windows
在Windows上安装libgphoto2没有官方方法,但您可以使用MSYS2(链接到包:mingw-w64-libgphoto2)来安装它。
基本用法
此示例将拍摄照片并将其保存到磁盘
use gphoto2::{Context, Result};
use std::path::Path;
fn main() -> Result<()> {
// Create a new context and detect the first camera from it
let camera = Context::new()?.autodetect_camera().wait().expect("Failed to autodetect camera");
let camera_fs = camera.fs();
// And take pictures
let file_path = camera.capture_image().wait().expect("Could not capture image");
camera_fs.download_to(&file_path.folder(), &file_path.name(), Path::new(&file_path.name().to_string())).wait()?;
// For more advanced examples take a look at the examples/ folder
Ok(())
}
您可以在这里找到更多示例
日志记录
为了让您的调试生活更加容易,此crate将libgphoto2日志函数连接到log
crate。
要显示日志,请使用日志实现,例如 env_logger
。
额外日志
默认情况下,我们在上下文中使用 gp_context_set_log_func
来获取日志,但还有 gp_log_add_func
,它提供了更多信息,在调试时非常有用。
这个crate默认不使用 gp_log_add_func
的原因是它在大多数Linux发行版和Windows中已被禁用。您需要检查您的安装版本是否未禁用此功能,或者自己构建 libgphoto2,且在配置命令中不要传递 --disabled-debug
标志。
要使用此功能,请启用此crate的 extended_logs
功能(如果 libgphoto2
的版本没有在没有 --disabled-debug
的情况下编译,则链接器将失败)。
测试
要运行此crate的测试,必须启用 test
功能
cargo test -F test
请注意,test
会构建一个非常精简的 libgphoto2
版本,这仅适用于测试(使用此crate时请不要启用此功能)。
稳定性
一般来说,所有API都应该是稳定的,我已经测试了我相机支持的API,迄今为止没有发现任何错误。
如果您遇到类似于 BAD_PARAMETERS
的错误或发现了错误,请请在 GitHub 上创建一个问题。
许可
版权所有 © 2022 Maxicarlos08 [email protected]
此库使用了 libgphoto2
库,该库在 LGPL版本2.1 许可下发布。
依赖
~0.6–3MB
~60K SLoC