#image #join #output-image #multiple #combine #single #stitchy

stitchy-core

将多个图像文件合并成一个图像的库

3个版本

0.1.2 2024年5月11日
0.1.1 2024年2月15日
0.1.0 2023年4月29日

#791图像


用于 stitchy

MIT 许可证

59KB
1.5K SLoC

Stitchy Core

example workflow Crates.io

将多个现有的图像文件合并成一个输出。设计特性包括

  • 用于应用常见使用的构建器结构
  • 通过路径单独收集源文件,或从目录中批量收集
  • 从依赖的image crate重新导出,该crate对库依赖性很大,输出作为image::DynamicImage返回,该类型也由本crate重新导出以方便使用。

请参阅根项目概述以了解Stitchy生态系统的概览。

典型用法

要获取当前目录中最近更新的3个文件,按从旧到新的顺序排列,并将输出写入当前目录,请运行

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(())
}

请参阅这些更复杂的实际用法示例

依赖项

~4MB
~63K SLoC