image_overlay/lib.rs
1//! # image-overlay
2//! This crate supports overlaying images with 27 blend modes.
3//!
4//! # Usage
5//! This is to be used with image crate as following:
6//!
7//! ``````````rust
8//! use image::{DynamicImage, ImageBuffer, Rgba, Luma};
9//! use image_overlay::{overlay, overlay_dyn_img, BlendMode};
10//!
11//!
12//! let mut dest = ImageBuffer::<Rgba<f32>, Vec<f32>>::new(100, 100);
13//! let src = ImageBuffer::<Luma<u8>, Vec<u8>>::new(100, 100);
14//!
15//! overlay(&mut dest, &src, 0, 0, BlendMode::default());
16//!
17//!
18//! let mut dest = DynamicImage::new_rgba8(100, 100);
19//! let src = DynamicImage::new_luma8(100, 100);
20//!
21//! // Do NOT use "overlay" for DynamicImage.
22//! // Use "overlay_dyn_img" insted.
23//! overlay_dyn_img(&mut dest, &src, 0, 0, BlendMode::default());
24//! ``````````
25//!
26//! # Features
27//! Use f32 as an intermediate representation by default.
28//! If you need calc with f64, please enable "f64" feature.
29//!
30//! If you need overlay with BlendMode::Dissolve, please enable "blend_dissolve" feature.
31//!
32//! If you need serde::Serialize/Deserialize for BlendMode, please enable "serde" feature.
33
34mod blend_mode;
35mod overlay;
36mod as_rgba;
37
38#[cfg(feature = "blend_dissolve")]
39pub mod rng;
40pub mod blend;
41
42pub use as_rgba::AsRgba;
43pub use blend_mode::BlendMode;
44pub use overlay::*;