Struct tiff::encoder::ImageEncoder

source ·
pub struct ImageEncoder<'a, W: 'a + Write + Seek, C: ColorType, K: TiffKind, D: Compression = Uncompressed> {
    encoder: DirectoryEncoder<'a, W, K>,
    strip_idx: u64,
    strip_count: u64,
    row_samples: u64,
    width: u32,
    height: u32,
    rows_per_strip: u64,
    strip_offsets: Vec<K::OffsetType>,
    strip_byte_count: Vec<K::OffsetType>,
    dropped: bool,
    compression: D,
    _phantom: PhantomData<C>,
}
Expand description

Type to encode images strip by strip.

You should call finish on this when you are finished with it. Encoding can silently fail while this is dropping.

§Examples

use tiff::encoder::*;
use tiff::tags::Tag;

let mut tiff = TiffEncoder::new(&mut file).unwrap();
let mut image = tiff.new_image::<colortype::RGB8>(100, 100).unwrap();

// You can encode tags here
image.encoder().write_tag(Tag::Artist, "Image-tiff").unwrap();

// Strip size can be configured before writing data
image.rows_per_strip(2).unwrap();

let mut idx = 0;
while image.next_strip_sample_count() > 0 {
    let sample_count = image.next_strip_sample_count() as usize;
    image.write_strip(&image_data[idx..idx+sample_count]).unwrap();
    idx += sample_count;
}
image.finish().unwrap();

You can also call write_data function wich will encode by strip and finish

Fields§

§encoder: DirectoryEncoder<'a, W, K>§strip_idx: u64§strip_count: u64§row_samples: u64§width: u32§height: u32§rows_per_strip: u64§strip_offsets: Vec<K::OffsetType>§strip_byte_count: Vec<K::OffsetType>§dropped: bool§compression: D§_phantom: PhantomData<C>

Implementations§

source§

impl<'a, W: 'a + Write + Seek, T: ColorType, K: TiffKind, D: Compression> ImageEncoder<'a, W, T, K, D>

source

fn new( encoder: DirectoryEncoder<'a, W, K>, width: u32, height: u32, ) -> TiffResult<Self>
where D: Default,

source

fn with_compression( encoder: DirectoryEncoder<'a, W, K>, width: u32, height: u32, compression: D, ) -> TiffResult<Self>

source

pub fn next_strip_sample_count(&self) -> u64

Number of samples the next strip should have.

source

pub fn write_strip(&mut self, value: &[T::Inner]) -> TiffResult<()>
where [T::Inner]: TiffValue,

Write a single strip.

source

pub fn write_data(self, data: &[T::Inner]) -> TiffResult<()>
where [T::Inner]: TiffValue,

Write strips from data

source

pub fn resolution(&mut self, unit: ResolutionUnit, value: Rational)

Set image resolution

source

pub fn resolution_unit(&mut self, unit: ResolutionUnit)

Set image resolution unit

source

pub fn x_resolution(&mut self, value: Rational)

Set image x-resolution

source

pub fn y_resolution(&mut self, value: Rational)

Set image y-resolution

source

pub fn rows_per_strip(&mut self, value: u32) -> TiffResult<()>

Set image number of lines per strip

This function needs to be called before any calls to write_data or write_strip and will return an error otherwise.

source

fn finish_internal(&mut self) -> TiffResult<()>

source

pub fn encoder(&mut self) -> &mut DirectoryEncoder<'a, W, K>

Get a reference of the underlying DirectoryEncoder

source

pub fn finish(self) -> TiffResult<()>

Write out image and ifd directory.

Trait Implementations§

source§

impl<'a, W: Write + Seek, C: ColorType, K: TiffKind, D: Compression> Drop for ImageEncoder<'a, W, C, K, D>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<'a, W, C, K, D> Freeze for ImageEncoder<'a, W, C, K, D>
where D: Freeze,

§

impl<'a, W, C, K, D> RefUnwindSafe for ImageEncoder<'a, W, C, K, D>

§

impl<'a, W, C, K, D> Send for ImageEncoder<'a, W, C, K, D>
where D: Send, C: Send, W: Send, <K as TiffKind>::OffsetType: Send,

§

impl<'a, W, C, K, D> Sync for ImageEncoder<'a, W, C, K, D>
where D: Sync, C: Sync, W: Sync, <K as TiffKind>::OffsetType: Sync,

§

impl<'a, W, C, K, D> Unpin for ImageEncoder<'a, W, C, K, D>
where D: Unpin, C: Unpin, <K as TiffKind>::OffsetType: Unpin,

§

impl<'a, W, C, K, D = Uncompressed> !UnwindSafe for ImageEncoder<'a, W, C, K, D>

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> 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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

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<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

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

§

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>,

§

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.