Crates.io | stitchy-core |
lib.rs | stitchy-core |
version | 0.1.2 |
source | src |
created_at | 2023-04-29 00:13:22.24921 |
updated_at | 2024-05-11 01:15:26.718986 |
description | Library to combine multiple image files into a single image |
homepage | |
repository | https://github.com/grimace87/Stitchy |
max_upload_size | |
id | 851773 |
size | 59,836 |
Joins multiple existing image files into a single output. Design features include:
image
crate, on which this crate relies heavily
and the output is returned as an image::DynamicImage
, which is re-exported from this crate for convenience.See the root project overview for an overview of the Stitchy ecosystem.
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: