3 releases
0.1.2 | May 11, 2024 |
---|---|
0.1.1 | Feb 15, 2024 |
0.1.0 | Apr 29, 2023 |
#825 in Images
300 downloads per month
Used in stitchy
59KB
1.5K
SLoC
Stitchy Core
Joins multiple existing image files into a single output. Design features include:
- Builder structures for applying common usage
- Collecting source files individually by path, or in bulk from directories
- Re-exports from the
image
crate, on which this crate relies heavily and the output is returned as animage::DynamicImage
, which is re-exported from this crate for convenience.
See the root project overview for an overview of the Stitchy ecosystem.
Typical Usage
To take the 3 most recently updated files in the current directory, ordering them oldest to newest, and writing the output to the current directory, run:
use stitchy_core::{ImageFiles, FilePathWithMetadata, OrderBy, TakeFrom, Stitch, AlignmentMode, image::ImageOutputFormat};
use std::fs::File;
use std::path::PathBuf;
fn run_stitch() -> Result<(), String> {
let number_of_files = 3;
let image_contents = ImageFiles::<FilePathWithMetadata>::builder()
.add_current_directory(vec![])?
.build()?
.sort_and_truncate_by(
number_of_files,
OrderBy::Latest,
TakeFrom::Start,
false
)?
.into_image_contents(true)?;
let output = Stitch::builder()
.images(image_contents)
.alignment(AlignmentMode::Horizontal)
.stitch()?;
let mut file_path: PathBuf = std::env::current_dir().unwrap();
file_path.push("stitch.png");
let mut file_writer = File::create(file_path).unwrap();
output.write_to(&mut file_writer, ImageOutputFormat::Png)
.map_err(|_| "Image could not be written.".to_owned())?;
Ok(())
}
See these examples for more complicated real-world usage:
Dependencies
~4MB
~64K SLoC