5个稳定版本
1.1.0 | 2023年11月4日 |
---|---|
1.0.3 | 2023年11月1日 |
1.0.0 | 2023年10月30日 |
#3 in #面部
每月 75 次下载
12KB
216 行
Vulpix
一个图像处理库
Vulpix 是一个使用 ImageMagick 的 magick_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