Expand description
A crate for encoding TIFF files.
This crate allows to create any hierarchy of IFDs and to add any tags with any values to each. It does so while avoiding that the user needs to worry about the position of each structure in the file and to point to it with the correct offset.
The main structure of this crate, used to actually write the TIFF
file, is the TiffFile
. This structure writes the file in little endian
by default (but that can be changed) and requires an IfdChain
. This
IfdChain
consists of the first Ifd
of the file, the one it points to (if any),
and so on. Each Ifd
has one or more entries, which are represented
by a pair of FieldTag
and FieldValues
.
§Examples
Creating a 256x256 bilevel image with every pixel black.
#[macro_use]
extern crate tiff_encoder;
use tiff_encoder::prelude::*;
use tiff_encoder::ifd::tags;
// 256*256/8 = 8192
// The image data will have 8192 bytes with 0 in every bit (each representing a
// black pixel).
let image_data = vec![0x00; 8192];
TiffFile::new(
Ifd::new()
.with_entry(tags::PhotometricInterpretation, SHORT![1]) // Black is zero
.with_entry(tags::Compression, SHORT![1]) // No compression
.with_entry(tags::ImageLength, LONG![256])
.with_entry(tags::ImageWidth, LONG![256])
.with_entry(tags::ResolutionUnit, SHORT![1]) // No resolution unit
.with_entry(tags::XResolution, RATIONAL![(1, 1)])
.with_entry(tags::YResolution, RATIONAL![(1, 1)])
.with_entry(tags::RowsPerStrip, LONG![256]) // One strip for the whole image
.with_entry(tags::StripByteCounts, LONG![8192])
.with_entry(tags::StripOffsets, ByteBlock::single(image_data))
.single() // This is the only Ifd in its IfdChain
).write_to("example.tif").unwrap();
Modules§
- ifd
- Module to manipulate IFDs and their entries.
- prelude
- Common imports that are necessary for almost every use of the
tiff_encoder
library. - write
- Helpers to write the file.
Macros§
- ASCII
- Convenient macro to declare an IFD entry of
ASCII
values. - BYTE
- Convenient macro to declare an IFD entry of
BYTE
values. - DOUBLE
- Convenient macro to declare an IFD entry of
DOUBLE
values. - FLOAT
- Convenient macro to declare an IFD entry of
FLOAT
values. - LONG
- Convenient macro to declare an IFD entry of
LONG
values. - RATIONAL
- Convenient macro to declare an IFD entry of
RATIONAL
values. - SBYTE
- Convenient macro to declare an IFD entry of
SBYTE
values. - SHORT
- Convenient macro to declare an IFD entry of
SHORT
values. - SLONG
- Convenient macro to declare an IFD entry of
SLONG
values. - SRATIONAL
- Convenient macro to declare an IFD entry of
SRATIONAL
values. - SSHORT
- Convenient macro to declare an IFD entry of
SSHORT
values. - UNDEFINED
- Convenient macro to declare an IFD entry of
UNDEFINED
values.
Structs§
- Tiff
File - Representation of a Tagged Image File.