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

Download history 18/week @ 2024-04-29 38/week @ 2024-05-06 40/week @ 2024-05-13 177/week @ 2024-05-20 19/week @ 2024-05-27 32/week @ 2024-06-03 19/week @ 2024-06-10 16/week @ 2024-07-08 85/week @ 2024-07-22 3/week @ 2024-07-29 10/week @ 2024-08-05 2/week @ 2024-08-12

每月100次下载

LGPL-2.1-only

105KB
2.5K SLoC

GPhoto2-rs

Rust对libgphoto2的绑定

关于gphoto-rs呢?

我知道其他crate(gphotogphoto2-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