API Reference
OfficeHeifMetadataReader
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
public static Boolean HasExifItem(Byte[] data, CancellationToken cancellationToken = default) #BooleanReturns whether the container declares an EXIF item, even if its payload is unlocated.
Parameters
- data System.Byte[]
- cancellationToken System.Threading.CancellationToken = default
public static Boolean HasExifItem(String filePath, CancellationToken cancellationToken = default) #BooleanReturns whether a bounded file declares an EXIF item.
Parameters
- filePath System.String
- cancellationToken System.Threading.CancellationToken = default
public static Boolean HasXmpItem(Byte[] data, CancellationToken cancellationToken = default) #BooleanReturns whether the container declares an XMP item, even if its payload is unlocated.
Parameters
- data System.Byte[]
- cancellationToken System.Threading.CancellationToken = default
public static Boolean HasXmpItem(String filePath, CancellationToken cancellationToken = default) #BooleanReturns whether a bounded file declares an XMP item.
Parameters
- filePath System.String
- cancellationToken System.Threading.CancellationToken = default
public static Boolean TryReadExifProfile(Byte[] data, out OfficeImageMetadata profile, CancellationToken cancellationToken = default) #BooleanReads the existing EXIF item through the shared typed EXIF codec.
Parameters
- data System.Byte[]
- profile OfficeIMO.Drawing.OfficeImageMetadata@
- cancellationToken System.Threading.CancellationToken = default
public static Boolean TryReadExifProfile(Stream source, out OfficeImageMetadata profile, CancellationToken cancellationToken = default) #BooleanReads EXIF from the current stream position, restoring seekable streams and leaving them open.
Parameters
- source System.IO.Stream
- profile OfficeIMO.Drawing.OfficeImageMetadata@
- cancellationToken System.Threading.CancellationToken = default
public static Boolean TryReadExifProfile(String filePath, out OfficeImageMetadata profile, CancellationToken cancellationToken = default) #BooleanReads an existing EXIF item from a bounded file.
Parameters
- filePath System.String
- profile OfficeIMO.Drawing.OfficeImageMetadata@
- cancellationToken System.Threading.CancellationToken = default
public static Boolean TryReadInfo(Byte[] data, out OfficeHeifImageInfo info, CancellationToken cancellationToken = default) #BooleanReads container brands, primary image properties, items, locations and references.
Parameters
- data System.Byte[]
- info OfficeIMO.Drawing.OfficeHeifImageInfo@
- cancellationToken System.Threading.CancellationToken = default
public static Boolean TryReadInfo(Stream source, out OfficeHeifImageInfo info, CancellationToken cancellationToken = default) #BooleanReads container information from the current stream position, restoring seekable streams and leaving them open.
Parameters
- source System.IO.Stream
- info OfficeIMO.Drawing.OfficeHeifImageInfo@
- cancellationToken System.Threading.CancellationToken = default
public static Boolean TryReadInfo(String filePath, out OfficeHeifImageInfo info, CancellationToken cancellationToken = default) #BooleanReads bounded container information from a file.
Parameters
- filePath System.String
- info OfficeIMO.Drawing.OfficeHeifImageInfo@
- cancellationToken System.Threading.CancellationToken = default
public static Boolean TryReadXmp(Byte[] data, out String xmp, CancellationToken cancellationToken = default) #BooleanReads an existing XMP item's UTF-8 packet without parsing its EXIF sibling.
Parameters
- data System.Byte[]
- xmp System.String@
- cancellationToken System.Threading.CancellationToken = default
public static Boolean TryReadXmp(Stream source, out String xmp, CancellationToken cancellationToken = default) #BooleanReads XMP from the current stream position, restoring seekable streams and leaving them open.
Parameters
- source System.IO.Stream
- xmp System.String@
- cancellationToken System.Threading.CancellationToken = default
public static Boolean TryReadXmp(String filePath, out String xmp, CancellationToken cancellationToken = default) #BooleanReads an existing XMP item from a bounded file.
Parameters
- filePath System.String
- xmp System.String@
- cancellationToken System.Threading.CancellationToken = default
public static Boolean TryWriteExifProfile(Byte[] data, OfficeImageMetadata profile, out Byte[] output, CancellationToken cancellationToken = default) #BooleanReplaces or clears an existing writable EXIF item and returns independently owned container bytes.
Parameters
- data System.Byte[]
- profile OfficeIMO.Drawing.OfficeImageMetadata
- output System.Byte[]@
- cancellationToken System.Threading.CancellationToken = default
public static Boolean TryWriteExifProfile(String filePath, String outputPath, OfficeImageMetadata profile, CancellationToken cancellationToken = default) #BooleanReplaces or clears an existing writable EXIF item in a file.
Parameters
- filePath System.String
- outputPath System.String
- profile OfficeIMO.Drawing.OfficeImageMetadata
- cancellationToken System.Threading.CancellationToken = default
public static Boolean TryWriteXmp(Byte[] data, String xmp, out Byte[] output, CancellationToken cancellationToken = default) #BooleanReplaces or clears an existing writable XMP item and returns independently owned container bytes.
Parameters
- data System.Byte[]
- xmp System.String
- output System.Byte[]@
- cancellationToken System.Threading.CancellationToken = default
public static Boolean TryWriteXmp(String filePath, String outputPath, String xmp, CancellationToken cancellationToken = default) #BooleanReplaces or clears an existing writable XMP item in a file.
Parameters
- filePath System.String
- outputPath System.String
- xmp System.String
- cancellationToken System.Threading.CancellationToken = default