Skip to main content

Search OfficeIMO

Enter a topic, API type, or PowerShell command.

Documentation Search all OfficeIMO/

API Reference

Class

OfficeHeifMetadataReader

Namespace OfficeIMO.Drawing
Assembly OfficeIMO.Core
Modifiers static

Reads and replaces HEIF/HEIC item metadata without decoding image pixels.

Inheritance

  • Object
  • OfficeHeifMetadataReader

Remarks

Encoded input and output are bounded to 128 MiB, individual metadata/property payloads to 16 MiB, declared item collections to 4,096 entries, and parser work to 65,536 records. Rewriting replaces or clears an existing single file-backed extent. Item-data-box, external, derived and multiple-extent items are readable where supported but not writable. Each metadata family is inspected independently; unchanged siblings are preserved as bytes. Reads and writes select a unique metadata item associated with the primary image through cdsc references. A sole unassociated metadata item remains supported for older containers; ambiguous or explicitly unrelated items are not selected. Information retains all declared items, while incomplete declared collections are rejected without returning partial results. Protected items and XMP items declaring a content encoding remain discoverable, but their payload reads and writes (including clearing) are unsupported. Stream reads include known caller-owned memory backing in the operation's managed working-set budget. XMP writes also account for the supplied UTF-16 string in that budget. XMP reads reject malformed UTF-8, and writes reject strings containing unpaired UTF-16 surrogates. A valid new packet can replace an existing malformed requested payload.

Methods

HasExifItem 2 overloads
public static Boolean HasExifItem(Byte[] data, CancellationToken cancellationToken = default) #
Returns: Boolean

Returns whether the container declares an EXIF item, even if its payload is unlocated.

Parameters

data System.Byte[] requiredposition: 0
cancellationToken System.Threading.CancellationToken = default optionalposition: 1
public static Boolean HasExifItem(String filePath, CancellationToken cancellationToken = default) #
Returns: Boolean

Returns whether a bounded file declares an EXIF item.

Parameters

filePath System.String requiredposition: 0
cancellationToken System.Threading.CancellationToken = default optionalposition: 1
HasXmpItem 2 overloads
public static Boolean HasXmpItem(Byte[] data, CancellationToken cancellationToken = default) #
Returns: Boolean

Returns whether the container declares an XMP item, even if its payload is unlocated.

Parameters

data System.Byte[] requiredposition: 0
cancellationToken System.Threading.CancellationToken = default optionalposition: 1
public static Boolean HasXmpItem(String filePath, CancellationToken cancellationToken = default) #
Returns: Boolean

Returns whether a bounded file declares an XMP item.

Parameters

filePath System.String requiredposition: 0
cancellationToken System.Threading.CancellationToken = default optionalposition: 1
TryReadExifProfile 3 overloads
public static Boolean TryReadExifProfile(Byte[] data, out OfficeImageMetadata profile, CancellationToken cancellationToken = default) #
Returns: Boolean

Reads the existing EXIF item through the shared typed EXIF codec.

Parameters

data System.Byte[] requiredposition: 0
profile OfficeIMO.Drawing.OfficeImageMetadata@ requiredposition: 1
cancellationToken System.Threading.CancellationToken = default optionalposition: 2
public static Boolean TryReadExifProfile(Stream source, out OfficeImageMetadata profile, CancellationToken cancellationToken = default) #
Returns: Boolean

Reads EXIF from the current stream position, restoring seekable streams and leaving them open.

Parameters

source System.IO.Stream requiredposition: 0
profile OfficeIMO.Drawing.OfficeImageMetadata@ requiredposition: 1
cancellationToken System.Threading.CancellationToken = default optionalposition: 2
public static Boolean TryReadExifProfile(String filePath, out OfficeImageMetadata profile, CancellationToken cancellationToken = default) #
Returns: Boolean

Reads an existing EXIF item from a bounded file.

Parameters

filePath System.String requiredposition: 0
profile OfficeIMO.Drawing.OfficeImageMetadata@ requiredposition: 1
cancellationToken System.Threading.CancellationToken = default optionalposition: 2
TryReadInfo 3 overloads
public static Boolean TryReadInfo(Byte[] data, out OfficeHeifImageInfo info, CancellationToken cancellationToken = default) #
Returns: Boolean

Reads container brands, primary image properties, items, locations and references.

Parameters

data System.Byte[] requiredposition: 0
info OfficeIMO.Drawing.OfficeHeifImageInfo@ requiredposition: 1
cancellationToken System.Threading.CancellationToken = default optionalposition: 2
public static Boolean TryReadInfo(Stream source, out OfficeHeifImageInfo info, CancellationToken cancellationToken = default) #
Returns: Boolean

Reads container information from the current stream position, restoring seekable streams and leaving them open.

Parameters

source System.IO.Stream requiredposition: 0
info OfficeIMO.Drawing.OfficeHeifImageInfo@ requiredposition: 1
cancellationToken System.Threading.CancellationToken = default optionalposition: 2
public static Boolean TryReadInfo(String filePath, out OfficeHeifImageInfo info, CancellationToken cancellationToken = default) #
Returns: Boolean

Reads bounded container information from a file.

Parameters

filePath System.String requiredposition: 0
info OfficeIMO.Drawing.OfficeHeifImageInfo@ requiredposition: 1
cancellationToken System.Threading.CancellationToken = default optionalposition: 2
TryReadXmp 3 overloads
public static Boolean TryReadXmp(Byte[] data, out String xmp, CancellationToken cancellationToken = default) #
Returns: Boolean

Reads an existing XMP item's UTF-8 packet without parsing its EXIF sibling.

Parameters

data System.Byte[] requiredposition: 0
xmp System.String@ requiredposition: 1
cancellationToken System.Threading.CancellationToken = default optionalposition: 2
public static Boolean TryReadXmp(Stream source, out String xmp, CancellationToken cancellationToken = default) #
Returns: Boolean

Reads XMP from the current stream position, restoring seekable streams and leaving them open.

Parameters

source System.IO.Stream requiredposition: 0
xmp System.String@ requiredposition: 1
cancellationToken System.Threading.CancellationToken = default optionalposition: 2
public static Boolean TryReadXmp(String filePath, out String xmp, CancellationToken cancellationToken = default) #
Returns: Boolean

Reads an existing XMP item from a bounded file.

Parameters

filePath System.String requiredposition: 0
xmp System.String@ requiredposition: 1
cancellationToken System.Threading.CancellationToken = default optionalposition: 2
TryWriteExifProfile 2 overloads
public static Boolean TryWriteExifProfile(Byte[] data, OfficeImageMetadata profile, out Byte[] output, CancellationToken cancellationToken = default) #
Returns: Boolean

Replaces or clears an existing writable EXIF item and returns independently owned container bytes.

Parameters

data System.Byte[] requiredposition: 0
profile OfficeIMO.Drawing.OfficeImageMetadata requiredposition: 1
output System.Byte[]@ requiredposition: 2
cancellationToken System.Threading.CancellationToken = default optionalposition: 3
public static Boolean TryWriteExifProfile(String filePath, String outputPath, OfficeImageMetadata profile, CancellationToken cancellationToken = default) #
Returns: Boolean

Replaces or clears an existing writable EXIF item in a file.

Parameters

filePath System.String requiredposition: 0
outputPath System.String requiredposition: 1
profile OfficeIMO.Drawing.OfficeImageMetadata requiredposition: 2
cancellationToken System.Threading.CancellationToken = default optionalposition: 3
TryWriteXmp 2 overloads
public static Boolean TryWriteXmp(Byte[] data, String xmp, out Byte[] output, CancellationToken cancellationToken = default) #
Returns: Boolean

Replaces or clears an existing writable XMP item and returns independently owned container bytes.

Parameters

data System.Byte[] requiredposition: 0
xmp System.String requiredposition: 1
output System.Byte[]@ requiredposition: 2
cancellationToken System.Threading.CancellationToken = default optionalposition: 3
public static Boolean TryWriteXmp(String filePath, String outputPath, String xmp, CancellationToken cancellationToken = default) #
Returns: Boolean

Replaces or clears an existing writable XMP item in a file.

Parameters

filePath System.String requiredposition: 0
outputPath System.String requiredposition: 1
xmp System.String requiredposition: 2
cancellationToken System.Threading.CancellationToken = default optionalposition: 3