#crop-image #split #grid #crop #image #sub-image

image_splitting

A Rust library for splitting images into smaller sub-images, supporting both equal division (3x3 grid) and custom-sized sub-images

1 unstable release

new 0.1.0 Apr 2, 2025

#391 in Images

MIT license

2MB
66 lines

Image Splitting Library

A Rust library for splitting images into smaller sub-images. This library provides two main functions:

  1. Splitting an image into 9 equal parts (3x3 grid)
  2. Splitting an image into sub-images of any specified size

Features

  • Split images into 9 equal parts (3x3 grid)
  • Split images into custom-sized sub-images
  • Handle edge cases where image dimensions aren't perfectly divisible
  • Support for various image formats (PNG, JPEG, etc.)
  • Preserve image quality and format

Installation

Add this to your Cargo.toml:

[dependencies]
image_splitting = "0.1.0"

Usage

Splitting into 9 equal parts

use image_splitting::split_image;

let sub_images = split_image("path/to/image.png")?;
assert_eq!(sub_images.len(), 9);

Splitting into custom-sized parts

use image_splitting::split_image_with_size;

// Split into 100x100 pixel sub-images
let sub_images = split_image_with_size("path/to/image.png", 100, 100)?;

Examples

Basic 3x3 Split

use image_splitting::split_image;

fn main() -> Result<(), image::ImageError> {
    let sub_images = split_image("input.png")?;
    
    // Save each sub-image
    for (i, sub_image) in sub_images.iter().enumerate() {
        sub_image.save(format!("sub_image_{}.png", i))?;
    }
    
    Ok(())
}

Custom Size Split

use image_splitting::split_image_with_size;

fn main() -> Result<(), image::ImageError> {
    let sub_images = split_image_with_size("input.png", 200, 150)?;
    
    // Save each sub-image
    for (i, sub_image) in sub_images.iter().enumerate() {
        sub_image.save(format!("sub_image_{}.png", i))?;
    }
    
    Ok(())
}

Dependencies

  • image crate (version 0.24) for image processing

Author

Created by Raisfeld Ori on February 4, 2025

License

This project is licensed under the MIT License - see the LICENSE file for details.

Dependencies