Struct HeifContext

Source
pub struct HeifContext<'a> { /* private fields */ }

Implementations§

Source§

impl HeifContext<'static>

Source

pub fn new() -> Result<HeifContext<'static>>

Create a new empty context.

Source

pub fn read_from_file(name: &str) -> Result<HeifContext<'static>>

Create a new context from file.

Source

pub fn read_file(&mut self, name: &str) -> Result<()>

Read a HEIF file from a named disk file.

Source

pub fn read_from_reader(reader: Box<dyn Reader>) -> Result<HeifContext<'static>>

Create a new context from reader.

Source

pub fn read_reader(&mut self, reader: Box<dyn Reader>) -> Result<()>

Read a HEIF file from the reader.

Source§

impl<'a> HeifContext<'a>

Source

pub fn read_from_bytes(bytes: &[u8]) -> Result<HeifContext<'_>>

Create a new context from bytes.

The provided memory buffer is not copied. That means, you will have to keep the memory buffer alive as long as you use the context.

Source

pub fn read_bytes<'b: 'a>(&mut self, bytes: &'b [u8]) -> Result<()>

Read a HEIF file from bytes.

The provided memory buffer is not copied. That means, you will have to keep the memory buffer alive as long as you use the context.

Source

pub fn write_to_bytes(&self) -> Result<Vec<u8>>

Source

pub fn write_to_file(&self, name: &str) -> Result<()>

Source

pub fn number_of_top_level_images(&self) -> usize

Source

pub fn top_level_image_ids(&self, item_ids: &mut [ItemId]) -> usize

Source

pub fn image_handle(&self, item_id: ItemId) -> Result<ImageHandle>

Source

pub fn primary_image_handle(&self) -> Result<ImageHandle>

Source

pub fn top_level_image_handles(&self) -> Vec<ImageHandle>

Source

pub fn encode_image( &mut self, image: &Image, encoder: &mut Encoder<'_>, encoding_options: Option<EncodingOptions>, ) -> Result<ImageHandle>

Compress the input image. The first image added to the context is also automatically set as the primary image, but you can change the primary image later with HeifContext::set_primary_image method.

Source

pub fn encode_thumbnail( &mut self, image: &Image, master_image_handle: &ImageHandle, bbox_size: u32, encoder: &mut Encoder<'_>, encoding_options: Option<EncodingOptions>, ) -> Result<Option<ImageHandle>>

Encode the image as a scaled down thumbnail image. The image is scaled down to fit into a square area of width bbox_size. If the input image is already so small that it fits into this bounding box, no thumbnail image is encoded and Ok(None) is returned. No error is returned in this case.

The encoded thumbnail is automatically assigned to the master_image_handle. Hence, you do not have to call HeifContext::assign_thumbnail() method.

Source

pub fn encode_grid( &mut self, tiles: &[Image], rows: NonZeroU16, encoder: &mut Encoder<'_>, encoding_options: Option<EncodingOptions>, ) -> Result<Option<ImageHandle>>

Available on crate feature v1_18 only.

Encodes an array of images into a grid.

§Arguments
  • tiles - User allocated array of images that will form the grid.
  • rows - The number of rows in the grid. The number of columns will be calculated from the size of tiles.
  • encoder - Defines the encoder to use. See LibHeif::encoder_for_format().
  • encoding_options - Optional, may be None.

Returns an error if tiles slice is empty.

Source

pub fn assign_thumbnail( &mut self, master_image_handle: &ImageHandle, thumbnail_image_handle: &ImageHandle, ) -> Result<()>

Assign master_image_handle as the thumbnail image of thumbnail_image_handle.

Source

pub fn set_primary_image( &mut self, image_handle: &mut ImageHandle, ) -> Result<()>

Source

pub fn add_generic_metadata<T>( &mut self, image_handle: &ImageHandle, data: &[u8], item_type: T, content_type: Option<&str>, ) -> Result<()>
where T: Into<FourCC>,

Add generic, proprietary metadata to an image. You have to specify an item_type that will identify your metadata. content_type can be an additional type.

For example, this function can be used to add IPTC metadata (IIM stream, not XMP) to an image. Although not standard, we propose to store IPTC data with item_type=b"iptc" and content_type=None.

Source

pub fn add_exif_metadata( &mut self, master_image: &ImageHandle, data: &[u8], ) -> Result<()>

Add EXIF metadata to an image.

Source

pub fn add_xmp_metadata( &mut self, master_image: &ImageHandle, data: &[u8], ) -> Result<()>

Add XMP metadata to an image.

Source

pub fn set_max_decoding_threads(&mut self, max_threads: u32)

If the maximum threads number is set to 0, the image tiles are decoded in the main thread. This is different from setting it to 1, which will generate a single background thread to decode the tiles.

Note that this setting only affects libheif itself. The codecs itself may still use multi-threaded decoding. You can use it, for example, in cases where you are decoding several images in parallel anyway you thus want to minimize parallelism in each decoder.

Source

pub fn security_limits(&self) -> SecurityLimits

Available on crate feature v1_19 only.

Returns the security limits for a context.

By default, the limits are set to the global limits, but you can change them with the help of HeifContext::set_security_limits() method.

Source

pub fn set_security_limits(&mut self, limits: &SecurityLimits) -> Result<()>

Available on crate feature v1_19 only.

Overwrites the security limits of a context.

Trait Implementations§

Source§

impl Drop for HeifContext<'_>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl Send for HeifContext<'_>

Auto Trait Implementations§

§

impl<'a> Freeze for HeifContext<'a>

§

impl<'a> !RefUnwindSafe for HeifContext<'a>

§

impl<'a> !Sync for HeifContext<'a>

§

impl<'a> Unpin for HeifContext<'a>

§

impl<'a> !UnwindSafe for HeifContext<'a>

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