All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Support for reading and writing the inline and reference mask region items.
- Requires LibHeif 1.17.0 or later.
ReadOnlyMemory<byte>
andReadOnlySpan<byte>
overloads for various APIs.- This adds a
System.Memory
dependency to the .NET Standard 2.0 target.
- This adds a
- An
AsSpan
method to theHeifIccColorProfile
class. - A .NET Standard 2.1 target.
- A
ColorConversionOptions
property to theHeifDecodingOptions
class.- Requires LibHeif 1.16.0 or later, it will be ignored on older versions.
- A
ColorConversionOptions
property to theHeifEncodingOptions
class.- Requires LibHeif 1.16.0 or later, it will be ignored on older versions.
- Support for the LibHeif region APIs.
- A
GetRegionItem
method to theHeifContext
class. AddRegion
andGetRegionItemIds
methods to theHeifImageHandle
class.- These methods require LibHeif 1.16.0 or later.
- A
- Support for the LibHeif item property APIs.
AddUserDescriptionProperty
,GetTransformationProperties
andGetUserDescriptionProperties
methods to theHeifContext
class.- These methods require LibHeif 1.16.0 or later.
- The
PixelAspectRatio
property will ignore a default initialized structure.- ISO/IEC 14496-12:2015 requires the horizontal and vertical spacing to be positive numbers.
- All obsolete members will produce a compiler error.
- Removed the .NET Standard 1.3 and .NET Framework 4.6 targets.
- A
GetDecoderDescriptors
method to theLibHeifInfo
class.- Requires LibHeif version 1.15.0 or later, it returns an empty collection on older versions.
- A
DecoderId
property to theHeifDecodingOptions
class.- This instructs LibHeif to use a specific decoder when reading the image.
- Requires LibHeif version 1.15.0 or later, it is ignored on older versions.
- A
HaveVersion
method to theLibHeifInfo
class.- This simplifies checking that LibHeif is at least the specified minimum version.
IccColorProfile
andNclxColorProfile
properties to theHeifImageHandle
class.- A
GetMetadataBlockInfo
method to theHeifImageHandle
class. - A
ContentLightLevel
property to theHeifImage
class.- The content light level data is used for HDR rendering.
- Requires LibHeif version 1.15.0 or later.
- A
MasteringDisplayColourVolume
property to theHeifImage
class.- The mastering display color volume data is used for HDR rendering.
- Requires LibHeif version 1.15.0 or later.
- A
PixelAspectRatio
property to theHeifImage
class.- Requires LibHeif version 1.15.0 or later.
- An
ImageOrientation
property to theHeifEncodingOptions
class.- This property allows the encoder to convert the EXIF Orientation values into the equivalent HEIF image transformations.
- Requires LibHeif version 1.14.0 or later, it is ignored on older versions.
GetDepthRepresentationInfo
throws an exception when the nonlinear representation model is larger than 2GB.- Previous versions of this library would silently ignore a nonlinear representation model that is larger than 2GB.
- A
SetMaximumDecodingThreads
method to theHeifContext
class.
- The P/Invoke name used by the
SetMaximumImageSizeLimit
method. - Various issues with the documentation.
- A potential correctness issue in the I/O code.
- A
Strict
property to theHeifDecodingOptions
class.- When enabled, it instructs the decoder to return an error for invalid input.
- Requires LibHeif version 1.13.0 or later, it is ignored on older versions.
- A
DecodingWarnings
property to theHeifImage
class.- This property returns a collection of warnings that occurred when decoding the image.
- Requires LibHeif version 1.13.0 or later, it returns an empty collection on older versions.
- The libheif initialization and cleanup methods will be called when creating the
HeifContext
.- This applies to libheif version 1.13.0 and later, it will be treated as a no-op on older versions.
- Various issues with the documentation.
- An
IsPremultipliedAlpha
property to theHeifImage
andHeifImageHandle
classes.- This property is supported on LibHeif 1.12 and later.
- A potential crash when creating the
HeifDepthRepresentationInfo
. - A parameter validation issue when reading zero bytes.
- The
ColorProfile
property in theHeifImage
class, use theIccColorProfile
andNclxColorProfile
properties instead.
- A
ValidValues
property to theHeifIntegerEncoderParameter
class.- This is used to get the supported values for the rav1e
tile-cols
andtile-rows
parameters. - Requires LibHeif version 1.10 or later.
- This is used to get the supported values for the rav1e
- Support for the new encoding options in LibHeif versions 1.9.2, 1.10 and 1.11.
- Support for reading and writing images with two color profiles (one ICC profile and one NCLX profile).
- This feature requires LibHeif version 1.10 or later, you can use the
CanWriteTwoColorProfiles
property in theLibHeifInfo
class for runtime checks. - It must be enabled in the
HeifEncodingOptions
instance by setting theWriteTwoColorProfiles
property totrue
.
- This feature requires LibHeif version 1.10 or later, you can use the
- Support for reading the vendor-specific auxiliary images.
- Added
GetAuxiliaryImage
,GetAuxiliaryImageIds
andGetAuxiliaryType
methods to theHeifImageHandle
class. - These methods require LibHeif version 1.11 or later.
- Added
- An
AuxiliaryImageType
property to theHeifImageHandle
class.
- A corrupted image bug when using lossless encoding.
- A few issues with the documentation.
A missing marshaling attribute on the write callback.
- Reduced memory usage when reading small files.
- A few issues with the documentation.
- A compatibility issue with some classes that are derived from
MemoryStream
.
- The
thumbnail
parameter in theEncodeImage
method has been renamed toimage
. ReadFromMemory
now throws anArgumentException
if the array length is zero.AddPlane
now throws anArgumentOutOfRangeException
if thewidth
,height
orbitDepth
parameters are less than or equal to 0.
- The
ReadFromFile
method, use theHeifContext(string)
constructor overload instead. - The
ReadFromMemory
method, use theHeifContext(byte[])
constructor overload instead.
- A
SetMaximumImageSizeLimit
method to theHeifContext
class. - A
WriteToStream
method to theHeifContext
class. - A few
HeifContext
constructor overloads that read the image data.HeifContext(string)
replaces theReadFromFile
method.HeifContext(byte[])
replaces theReadFromMemory
method.HeifContext(Stream, bool)
reads from a Stream, and optionally leaves the stream open after the HeifContext has been disposed.
- The
SetParameter(string, string)
overload will now try to convert Boolean and integer values to the correct type, an exception will be thrown if the conversion fails. GetExifMetadata()
will now returnnull
if the TIFF header offset is not valid.- Mark the
HeifItemId
structure as readonly. - Reduce memory usage when reading a HEIF image from a byte array.
- A number of issues with the documentation.
First version