Expand description

img-parts

The img-parts crate provides a low level api for reading and writing containers from various image formats.

It currently supports Jpeg, Png and RIFF (with some helper functions for WebP).

Reading and writing raw ICCP and EXIF metadata

use std::fs::{self, File};

use img_parts::jpeg::Jpeg;
use img_parts::{ImageEXIF, ImageICC};

let input = fs::read("img.jpg")?;
let output = File::create("out.jpg")?;

let mut jpeg = Jpeg::from_bytes(input.into())?;
let icc_profile = jpeg.icc_profile();
let exif_metadata = jpeg.exif();

jpeg.set_icc_profile(Some(another_icc_profile.into()));
jpeg.set_exif(Some(new_exif_metadata.into()));
jpeg.encoder().write_to(output)?;

Modifying chunks

use std::fs::{self, File};

use img_parts::jpeg::{markers, Jpeg, JpegSegment};
use img_parts::Bytes;

let input = fs::read("img.jpg")?;
let output = File::create("out.jpg")?;

let mut jpeg = Jpeg::from_bytes(input.into())?;

let comment = Bytes::from("Hello, I'm writing a comment!");
let comment_segment = JpegSegment::new_with_contents(markers::COM, comment);
jpeg.segments_mut().insert(1, comment_segment);

jpeg.encoder().write_to(output)?;

Modules

Structs

A cheaply cloneable and sliceable chunk of contiguous memory.

An encoder for and image container or for an image chunk

A reader for ImageEncoder that will never fail

Enums

An enum wrapping the common functions shared by the different image formats

The Errors that may occur when processing an image.

Traits

Trait to read and write the raw EXIF metadata for an image

Trait to read and write the raw ICC Profile for an image

Type Definitions