Skip to content

MicroPNM is a lightweight, zero-dependency Rust crate for parsing binary PPM image files. It is designed to with minimal memory usage and is suitable for embedded contexts and WebAssembly.

License

Notifications You must be signed in to change notification settings

arnemileswinter/MicroPNM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MicroPNM 🎨💻

Crates.io GitHub Rust GitHub issues GitHub pull requests

MicroPNM is a small and efficient library for parsing PNM image formats in Rust. 🦀 It is designed to be minimalistic and highly optimized for resource-constrained systems, 🔍 making it suitable for embedded contexts and WebAssembly using the include_bytes! macro. 💪

At the moment, only reading of binary PPM (P6) is supported. 🚫

Usage 🛠️

Add the following to your Cargo.toml file:

[dependencies]
micropnm = "0.1.0"

In your Rust code, use it like this:

use micropnm::PNMImage;

let raw_img = include_bytes!("./path/to/your/binary_image.ppm");
let ppm_img = PNMImage::from_parse(raw_img).unwrap();

// Get the image dimensions
let width = ppm_img.width();
let height = ppm_img.height();

// Get the maximum pixel value
let max_pixel = ppm_img.maximum_pixel();

// Get the image comment
let comment = ppm_img.comment();

// Get the RGB value of a pixel
let (r, g, b) = ppm_img.pixel_rgb(10, 20).unwrap();

Minimal Allocations 🧑‍💻

MicroPNM is designed with minimal memory usage in mind. 💭 This makes it suitable for use in embedded contexts or in WebAssembly modules. 🕸️ The PNMImage type itself is simply a thin wrapper around a byte slice of raw image data. 💾

License 📜

This library is licensed under the MIT license.

About

MicroPNM is a lightweight, zero-dependency Rust crate for parsing binary PPM image files. It is designed to with minimal memory usage and is suitable for embedded contexts and WebAssembly.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages