Crates.io | stitchy-core |
lib.rs | stitchy-core |
version | |
source | src |
created_at | 2023-04-29 00:13:22.24921 |
updated_at | 2025-02-12 19:28:46.588002 |
description | Library to combine multiple image files into a single image |
homepage | |
repository | https://github.com/grimace87/Stitchy |
max_upload_size | |
id | 851773 |
Cargo.toml error: | TOML parse error at line 18, column 1 | 18 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include` |
size | 0 |
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: