11 个版本 (7 个稳定版本)
1.4.1 | 2024年5月1日 |
---|---|
1.3.0 | 2024年3月11日 |
1.2.0 | 2022年12月30日 |
1.0.1 | 2022年11月16日 |
0.2.0 | 2021年6月21日 |
#130 in 图像
135KB
1.5K SLoC
Tinify API 的 Rust 客户端 🦀
Tinify API 的 Rust 语言客户端,用于 TinyPNG 和 TinyJPG。Tinify 智能压缩您的图像。更多信息请参阅 https://tinify.com。
文档
状态
目前处于开发中。
还有 TinyPNG 的功能尚未实现。
查看 Tinify API 的所有功能: 文档。
路线图
- 压缩图像
- 调整图像大小
- 转换图像
- 保留元数据
- 保存到 Amazon S3
- 保存到 Google Cloud Storage
- 实现异步非阻塞客户端
入门
使用 Cargo 安装 API 客户端。将以下内容添加到 Cargo.toml
[dependencies]
tinify-rs = "1.4.1"
使用异步客户端
[dependencies]
tinify-rs = { version = "1.4.1", features = ["async"] }
用法
-
关于密钥
从 https://tinypng.com/developers 获取 API 密钥
-
从文件压缩
use tinify::error::TinifyError;
use tinify::sync::Tinify;
use std::path::Path;
fn main() -> Result<(), TinifyError> {
let key = "api key";
let output = Path::new("./optimized.jpg");
let tinify = Tinify::new().set_key(key);
let optimized = tinify
.get_client()?
.from_file("./unoptimized.jpg")?
.to_file(output);
if let Err(error) = optimized {
match error {
TinifyError::ClientError { ref upstream } => {
println!("Error: {} message: {}", upstream.error, upstream.message);
}
_ => println!("{:?}", error),
}
}
Ok(())
}
- 异步从文件压缩
use tinify::error::TinifyError;
use tinify::async_bin::Tinify;
use std::path::Path;
#[tokio::main]
async fn main() -> Result<(), TinifyError> {
let key = "api key";
let output = Path::new("./optimized.jpg");
let tinify = Tinify::new().set_key(key);
let compressed = tinify
.get_async_client()?
.from_file("./unoptimized.jpg").await?
.to_file(output).await;
if let Err(error) = compressed {
match error {
TinifyError::ClientError { ref upstream } => {
println!("Error: {} message: {}", upstream.error, upstream.message);
}
_ => println!("{:?}", error),
}
}
Ok(())
}
运行测试
创建包含 TiniPNG KEY 的 .env 文件
cargo test --features async
贡献
欢迎所有贡献。请随意打开任何问题或拉取请求。
依赖
~4–16MB
~235K SLoC