#优化 #tiny-png #api-client #http-client #tinify #tinyjpg

tinify-rs

A Rust 客户端用于 Tinify API

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 图像

MIT 许可证

135KB
1.5K SLoC

Tinify API 的 Rust 客户端 🦀

CI Status Crate Version

Tinify API 的 Rust 语言客户端,用于 TinyPNGTinyJPG。Tinify 智能压缩您的图像。更多信息请参阅 https://tinify.com

文档

访问 HTTP 客户端的文档.

状态

目前处于开发中。

还有 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"] }

用法

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