11 个版本

0.2.11 2019 年 4 月 16 日
0.2.10 2019 年 3 月 19 日
0.1.1 2019 年 3 月 2 日

#520图像

Download history 4638/week @ 2024-03-14 4198/week @ 2024-03-21 3998/week @ 2024-03-28 3969/week @ 2024-04-04 4110/week @ 2024-04-11 4348/week @ 2024-04-18 4442/week @ 2024-04-25 5564/week @ 2024-05-02 3859/week @ 2024-05-09 3901/week @ 2024-05-16 3949/week @ 2024-05-23 4414/week @ 2024-05-30 3638/week @ 2024-06-06 5399/week @ 2024-06-13 5900/week @ 2024-06-20 5083/week @ 2024-06-27

20,705 每月下载量
用于 29 个crate (21 直接)

MIT 许可证

36KB
812

colors_transform

Crates.io

用 Rust 编写的颜色转换和突变模块。

已弃用!请使用 colorsys 包代替。

在线文档

目前你可以使用四种颜色表示选项:Rgb (Rgba),Hsl (Hsla)。每个都有修改和转换的各种方法。查看它们实现的 Color 特性。还有一些用于十六进制字符串颜色的方法。

所有值都以 f32 给出,以进行更精确的计算。

它能做什么

获取器和设置器

use colors_transform::{Rgb, Color};
let rgb = Rgb::from(57.3, 12.7, 53.0);
// where tuple is ($red, $green, $blue)

let modified = rgb
  .set_red(245.0) // Rgb { r: 245.0, g: 152.0, b: 53.0 }
  .set_green(152.0) // Rgb { r: 245.0, g: 152.0, b: 53.0 }
  .set_hue(279.0); // Rgb { r: 177.80003, g: 53.00001, b: 245.0 }

let saturation = modified.get_saturation(); // 63.71429
let blue = modified.get_blue(); // 53.00001

转换

let hex_color = Hsl::from(315.9, 99.7, 50.0)
// where tuple is ($hue, $saturation, $lightness)
  .to_rgb() // ~Rgb { r: 254.6, g: 0.38, b: 187.24 }
  .set_saturation(33.3) // ~Rgb { r: 169.9, g: 85.04, b: 147.45 }
  .to_hsl() // Hsl { h: 315.9, s: 33.3, l: 50.0 }
  .set_alpha(0.47) // Hsl { h: 315.9, s: 99.7, l: 50.0 } // a: 0.47
  .to_rgb() // Rgb { r: 169.95749, g: 85.0425, b: 147.45502 }
  .to_css_hex_string(); // #aa5593

修改

let rgb_tuple = (245.0,152.0,53.0);
let rgb = Rgb::from_tuple(&rgb_tuple)
  .lighten(21.0) // Rgb { r: 250.05188, g: 204.03442, b: 155.04813 }
  .saturate( 3.9999 ); // Rgb { r: 252.14981, g: 204.1, b: 152.9502 }
  .invert(); // Rgb { r: 2.8501892, g: 50.899994, b: 102.049805 }

从字符串和 CSS 字符串表示解析

let hsl: Hsl = "hsl(359,12%,71)".parse().unwrap();
// Hsl { h: 359.0, s: 12.0, l: 71.0 }

let rgb1 = "rgb(12,13,14)"
  .parse::<Rgb>()
  .unwrap()
  .adjust_color( RgbUnit::Green, 139.7 );
// Rgb { r: 12.0, g: 152.7, b: 14.0 }

let rgb2 = Rgb::from_hex_str("#fc0").unwrap();
// Rgb { r: 255.0, g: 204.0, b: 0.0 }

let rgb_str = rgb1.to_css_string();
// rgb(12,153,14)

let hsl_str = rgb2.to_hsl().to_css_string();
// "hsl(48,100%,50%)"

如您所见,它是完全可链的。

颜色单位范围

所有颜色单位都是 f32。以下是它们的范围

  • 红色 - 0.0 .. 255.0
  • 绿色 - 0.0 .. 255.0
  • 蓝色 - 0.0 .. 255.0
  • 色调 - 0.0 .. 360.0
  • 饱和度 - 0.0 .. 100.0
  • 亮度 - 0.0 .. 100.0
  • 透明度 - 0.0 .. 1.0

如果您指定的值不在此范围内,它们将被替换为最小或最大值。

享受使用吧!

许可证

本模块遵循 MIT 许可

无运行时依赖