TiffHeader

Struct TiffHeader 

Source
pub struct TiffHeader {
    pub byte_order: ByteOrder,
    pub is_bigtiff: bool,
    pub first_ifd_offset: u64,
}
Expand description

Parsed TIFF file header.

Contains the essential information needed to begin parsing IFDs:

  • Byte order for reading all subsequent values
  • Whether this is classic TIFF or BigTIFF (affects entry sizes and offset widths)
  • Location of the first IFD

Fields§

§byte_order: ByteOrder

Byte order for all multi-byte values in the file

§is_bigtiff: bool

Whether this is a BigTIFF file (64-bit offsets)

§first_ifd_offset: u64

Offset to the first IFD in the file

Implementations§

Source§

impl TiffHeader

Source

pub fn parse(bytes: &[u8], file_size: u64) -> Result<Self, TiffError>

Parse a TIFF header from raw bytes.

The input must contain at least 8 bytes for classic TIFF or 16 bytes for BigTIFF. The function first reads enough to determine the format, then validates the rest.

§Arguments
  • bytes - Raw header bytes (at least 8 bytes, preferably 16 for BigTIFF support)
  • file_size - Total file size (used to validate IFD offset)
§Errors
  • InvalidMagic if byte order bytes are not II or MM
  • InvalidVersion if version is not 42 or 43
  • InvalidBigTiffOffsetSize if BigTIFF offset size is not 8
  • FileTooSmall if there aren’t enough bytes for the header
  • InvalidIfdOffset if the first IFD offset is outside the file
Source

pub const fn ifd_entry_size(&self) -> usize

Size of an IFD entry in bytes.

Classic TIFF: 12 bytes (2 tag + 2 type + 4 count + 4 value/offset) BigTIFF: 20 bytes (2 tag + 2 type + 8 count + 8 value/offset)

Source

pub const fn ifd_count_size(&self) -> usize

Size of the entry count field at the start of an IFD.

Classic TIFF: 2 bytes (u16) BigTIFF: 8 bytes (u64)

Source

pub const fn ifd_next_offset_size(&self) -> usize

Size of the next IFD offset field at the end of an IFD.

Classic TIFF: 4 bytes (u32) BigTIFF: 8 bytes (u64)

Source

pub const fn value_offset_size(&self) -> usize

Size of the value/offset field in an IFD entry.

This determines the inline value threshold: Classic TIFF: 4 bytes BigTIFF: 8 bytes

Trait Implementations§

Source§

impl Clone for TiffHeader

Source§

fn clone(&self) -> TiffHeader

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TiffHeader

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for TiffHeader

Source§

fn eq(&self, other: &TiffHeader) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for TiffHeader

Source§

impl Eq for TiffHeader

Source§

impl StructuralPartialEq for TiffHeader

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AsOut<T> for T
where T: Copy,

Source§

fn as_out(&mut self) -> Out<'_, T>

Returns an out reference to self.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

Source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more