#马赛克 #图像 #星图 #生成 #图形

starry_mosaic

用于生成带有各种几何图案的彩色马赛克图像的库

4 个版本 (破坏性更新)

0.4.0 2022年10月17日
0.3.0 2022年9月10日
0.2.0 2022年7月6日
0.1.0 2022年6月24日

#733 in 图像

MIT 许可证

180KB
3K SLoC

Logo

星图马赛克

Crates.io docs.rs Continuous integration

用于生成带有各种几何图案的彩色马赛克图像的库。

如何创建马赛克图像

创建马赛克很简单

  • 设置结果图像的大小;
  • 选择马赛克基于的形状,
  • 设置其位置、旋转和缩放
  • 最后构建所选类型的马赛克。

然后可以使用任何颜色或渐变来绘制这个马赛克。

示例

以下代码创建了这个项目的标志(您上面看到的那个)。

use palette::LinSrgb;
use starry_mosaic::{coloring_method::RadialGradient, Mosaic, MosaicBuilder, Vector};

let mosaic = MosaicBuilder::default()
    .set_regular_polygon_shape(13)
    .set_image_size(800, 800)
    .set_center(Vector::new(400.0, 400.0))
    .set_uniform_scale(0.75)
    .build_star()
    .unwrap();

let gradient = vec![
    (0.125, LinSrgb::new(1.0f64, 0.0, 0.0)),
    (0.275, LinSrgb::new(1.0f64, 0.5, 0.0)),
    (0.425, LinSrgb::new(1.0f64, 1.0, 0.0)),
    (0.575, LinSrgb::new(0.0f64, 1.0, 0.0)),
    (0.725, LinSrgb::new(0.0f64, 0.75, 1.0)),
    (0.875, LinSrgb::new(0.0f64, 0.0, 1.0)),
];
let mosaic_image = mosaic.draw(RadialGradient::new(
    gradient,
    Vector::new(540.0, 320.0),
    20.0,
    Vector::new(400.0, 400.0),
    360.0,
    0.25
));

let save_result = mosaic_image.save("target/logo.png");
assert!(save_result.is_ok());

更多图像

要查看更多图像,请访问本项目仓库中的 images 目录

依赖项

~17MB
~136K SLoC