Crate img_parts

Source
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 Aliases§