add support for the AVIF, HEIC and HEIF formats #13
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds support for the AVIF, HEIC and HEIF formats.
These 3 formats have in common that they use the HEIF container format specified in ISO/IEC 23008-12.
https://nokiatech.github.io/heif/technical.html also summarizes the format quite well.
The MIME types and variant types (file extension) for HEIC and HEIF are based on sections C.2 and D.2 of the ISO specification:
[...]
[...]
A HEIF container can contain multiple images, so I kept the logic as in
:ico
(take the size of the largest image).The size of an image is found in the
ispe
box:Examples here: https://mpeggroup.github.io/FileFormatConformance/?query=%3D%22ispe%22
This is also valid for AVIF per the specification: https://aomediacodec.github.io/av1-avif/latest-approved.html#image-spatial-extents-property
If you find the approach ok, I could add some tests. I have tested it with some images I have found online and compared the results with
exiftool
, but improvements are probably still possible.Let me know what you think.
closes #12