5个稳定版本

1.1.0 2023年11月4日
1.0.3 2023年11月1日
1.0.0 2023年10月30日

#3 in #面部

Download history 112/week @ 2024-04-16 18/week @ 2024-04-23 75/week @ 2024-07-30

每月 75 次下载

MIT 协议

12KB
216

Vulpix

一个图像处理库

Vulpix 是一个使用 ImageMagickmagick_rust 包装器的小型包装器。它允许您快速处理图像,例如裁剪、锐化、提高亮度、轻松更改格式。它还支持面部裁剪。该库的使用示例可以在 此处 找到,其中 vulpix 用于从 aws s3 安全地提供图像并处理它们。

安装

您需要安装 image magick v7,有关 macos 的安装说明,请参阅 image magick 安装文档

brew install imagemagick

在您的 rust 项目中安装 vulpix

cargo add vulpix

您还需要 async trait

cargo add async-trait

使用方法

初始化 vulpix,您只需要做一次

vulpix::init();

实现您的用例的 ImageAceess 异步特性,这需要您实现 3 个方法,用于访问图像、保存图像(作为缓存的处理后的图像)以及在图像中检测面部。

您可以在 此处 查看使用 aws s3 和 rekognation api 的该特性的实际实现

use vulpix::{bounding_box::BoundingBox, ImageAccess, ImageError};

struct MyImageRepo

#[async_trait]
impl ImageAccess for MyImageRepo {
    async fn get_img(self, tag: &str, key: &str) -> Result<Vec<u8>, ImageError> {
      todo!("implement get_img")
    }

    async fn save_img(self, tag: &str, key: &str, body: Vec<u8, ImageError>) -> Result<()> {
      todo!("implement save_img")
    }

    async fn recog_face(self, tag: &str, key: &str) -> Option<BoundingBox> {
      todo!("implement recog_face")
    }
}

最后,我们可以通过传递图像参数来处理图像

use vulpix::params::{ImgParams, ImgFormat};

let image_params =
  ImgParams {
    w: Some(250), // image width
    h: Some(250), // image height
    format: Some(ImgFormat.Png), // image format
    blur: Some(false), // blur image
    sharpen: Some(true), // sharpen image
    enhance: Some(true), // enchance image
    facecrop: Some(true), // crops images on face if face bounding box is found
    facepad: Some(1.5), // padding around face while using facecrop
  }

let image_access = MyImageRepo {};

let processed_image_bytes = vulpix::handle_img(
      image_access,
      "my_tag",
      "my_cache_tag",
      "image_key",
      &image_params,
  )
  .await?

依赖关系

~3–12MB
~131K SLoC