#camera #copy #photo #camera-image #avif #sdcard #google-drive

bin+lib kapy

用于优化复制照片的命令行工具

9 个版本

0.2.2 2023年4月9日
0.2.1 2023年4月9日
0.1.5 2023年2月25日

#262 in 操作系统

Download history 27/week @ 2024-03-29 9/week @ 2024-04-05

60 每月下载量

MITGPL-3.0+

480KB
3K SLoC

kapy

Kapy 是一个简单的工具,旨在将数码相机照片从SD卡复制到磁盘,并支持转换。此工具简化了将照片从相机传输到电脑的过程,同时允许在复制过程中进行任何必要的图像转换。

  • 从JPEG转换为HEIC/AVIF以减小图像大小
  • 将Google Drive上.gpx文件的GPS信息合并到EXIF中
  • 根据EXIF比率信息调整图像大小和压缩比

构建

在macOS上构建

如果你使用Homebrew (https://brew.sh.cn/),可以轻松安装所需的包。
安装Homebrew后,你可以运行以下命令来安装所需的包和构建应用程序

$ brew install pkg-config imagemagick exiv2 libssh
$ CLIENT_ID={YOUR_CLIENT_ID} CLIENT_SECRET={YOUR_SECRET} cargo build

如果你没有使用Homebrew,请安装以下所需的包并相应地设置环境变量

在Windows上构建

先决条件

  • ImageMagick库 (https://imagemagick.org.cn/script/download.php)
    • 提供预构建的二进制安装程序。
    • 在安装过程中,应选中安装C/C++头文件的复选框。
    • 您需要设置以下Windows环境变量
      • IMAGE_MAGICK_DIR={YOUR_MAGICK_INSTALLATION_DIR}
  • Exiv2库 (https://exiv2.org/download.html)
    • 以.zip压缩文件的形式提供预构建的二进制文件。
    • 您需要设置以下Windows环境变量
      • EXIV2_INCLUDE_DIRS={YOUR_EXIV2_INCLUDE_DIR}
      • EXIV2_LIB_DIRS={YOUR_EXIV_LIB_DIR}
  • libssh库 (https://www.libssh.org/get-it/)
    • 作为Microsoft的包管理器vcpkg中的软件包提供。
    • vcpkg (https://vcpkg.io/en/getting-started.html)应首先安装。
    • 安装后,安装库: vcpkg install --triplet=x64-windows libssh
    • 您需要设置以下Windows环境变量
      • LIBSSH_INCLUDE_DIRS={您的LIBSSH头文件目录}
      • LIBSSH_LIB_DIRS={您的LIBSSH库目录}
  • clang库(https://releases.llvm.org/download.html
    • 提供预构建的二进制安装程序。
    • 您需要设置以下Windows环境变量
      • LIBCLANG_PATH={您的LLVM二进制目录}
  • NASM可执行文件(https://www.nasm.us/
    • 提供预构建的二进制安装程序和仅可执行文件
    • 您需要将可执行文件安装的目录添加到您的PATH。
  • libheif库(https://github.com/strukturag/libheif
    • 作为Microsoft的包管理器vcpkg中的软件包提供。
    • vcpkg (https://vcpkg.io/en/getting-started.html)应首先安装。
    • 安装后,安装库:vcpkg install --triplet=x64-windows-static-md
    • 您需要设置与vcpkg相关的环境变量
      • VCPKG_ROOT={您的VCPKG根目录}
      • 您需要将VCPKG_ROOT目录追加到您的PATH环境变量中。

构建

> set CLIENT_ID={YOUR_CLIENT_ID}
> set CLIENT_SECRET={YOUR_SECRET}
> set IMAGE_MAGICK_DIR={YOUR_MAGICK_INSTALLATION_DIR} 
> set EXIV2_INCLUDE_DIRS={YOUR_EXIV2_INCLUDE_DIR} 
> set EXIV2_LIB_DIRS={YOUR_EXIV_LIB_DIR}
> set LIBSSH_INCLUDE_DIRS={YOUR_LIBSSH_INCLUDE_DIR}
> set LIBSSH_LIB_DIRS={YOUR_LIBSSH_LIB_DIR}
> set LIBCLANG_PATH={YOUR_LLVM_BIN_DIR} 
> cargo build

用法

$ kapy clone -c ~/.kapy.yaml --from /Volumes/Untitled/DCIM/108HASBL --to ~/images

免责声明

要使用您自己的Google OAuth 2.0 client_id和client_secret访问Google Drive API,您需要在Google开发者控制台中设置一个项目并创建OAuth 2.0凭证。获取凭证后,您可以将CLIENT_ID和CLIENT_SECRET作为环境变量设置,或者在代码中直接包含它们。

$ CLIENT_ID={YOUR_CLIENT_ID} CLIENT_SECRET={YOUR_SECRET} kapy login
$ kapy clone

如果您遇到登录问题,可以按照以下方式重新登录。

$ kapy clean
$ CLIENT_ID={YOUR_CLIENT_ID} CLIENT_SECRET={YOUR_SECRET} kapy login

或者,您可以在编译时分配CLIENT_ID和CLIENT_SECRET值。

$ CLIENT_ID={YOUR_CLIENT_ID} CLIENT_SECRET={YOUR_SECRET} cargo install kapy

OR

$ CLIENT_ID={YOUR_CLIENT_ID} CLIENT_SECRET={YOUR_SECRET} cargo build

由于Google Drive API可以访问用户的敏感信息,它有一个严格的应用程序批准流程。这个应用程序最初是为我个人使用而创建的,很难符合Google严格的批准流程。您应该参考以下文档以生成自己的Google OAuth 2.0凭证

https://developers.google.com/identity/protocols/oauth2/native-app

以下API作用域必须指定

配置

  • 示例
default_path:
  from: /Volumes/Untitled/DCIM/108HASBL 
  to: ~/images
polices:
- rate: [5]
  commands:
   resize: 100%  # default value; ignore it
   format: preserve  # default value
- rate: [4]
  commands:
    quality: 95%
    format: heic
- rate: [1,2,3]
  commands:
    resize: 50% # resize image to 50%
    quality: 95%
    format: heic
- rate: [0]
  commands:
    resize: 36m # resize image to 36m pixels
    quality: 92%
    format: heic

依赖项

~32–49MB
~898K SLoC