2个稳定版本

1.0.1 2024年8月23日
1.0.0 2022年10月3日

#588 in 配置


用于 2 个Crates(通过 libgphoto2_sys

MIT 许可证

4KB
62

GPhoto2-rs

libgphoto2的Rust绑定

关于gphoto-rs呢?

我知道其他crate(gphotogphoto2-sys,由 @dcuddeback 创建),但它缺少许多特性,使我无法使用这个crate,最显著的是无法更改相机设置和内存文件下载。
自从2017年以来,作者没有活跃,尽管有很多拉取请求和功能请求,所以我创建了一个新的项目,使用更现代的rust代码和libgphoto2的所有特性。

特性

  • 相机
    • 捕获图像
    • 捕获预览图像
    • 下载图像
    • 获取端口信息
    • 获取能力(型号、驱动稳定性、权限等)
    • 读取配置
    • 设置配置
    • 与相机上的文件系统交互
    • 相机事件
    • USB端口信息
  • 上下文
    • 自动检测相机
    • 获取可用相机列表
    • 通过型号和端口获取相机

入门

安装

运行 cargo add gphoto2 将gphoto2添加到您的项目或将其添加到您的 Cargo.toml

[dependencies]
gphoto2 = "1"

安装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都应该稳定,我已经测试了我支持的相机,到目前为止没有发现任何错误。
如果您遇到类似BAD_PARAMETERS的错误或发现了错误,请在GitHub上创建一个问题。

许可证

版权所有© 2022 Maxicarlos08 [email protected]

这个库使用了libgphoto2库,该库根据LGPL版本2.1授权。

无运行时依赖