Skip to content

Tiff: Support decoding f16 images#3015

Draft
RunDevelopment wants to merge 2 commits into
image-rs:mainfrom
RunDevelopment:tiff-f16
Draft

Tiff: Support decoding f16 images#3015
RunDevelopment wants to merge 2 commits into
image-rs:mainfrom
RunDevelopment:tiff-f16

Conversation

@RunDevelopment

Copy link
Copy Markdown
Member

Resolves #2795
Based on #3014

Changes:

  • Tiff decoder now decodes Gray/Rgb/Rgba f16 images by converting them to f32.
  • Added ExtendedColorType::{L16F, La16F, Rgb16F, Rgba16F}.
  • Fixed a bug in testing infra

I added support for decoding f16 TIFF images by converting them to f32. This is a lossless conversion, if a bit inefficient. Importantly, this does not add new dependencies. I used the methods on half::f16 exposed by the tiff crate to avoid adding half to our direct dependencies.

This correctly decodes the f16 test images from image-rs/image-tiff#257. (Interestingly, a lot of programs don't seem to decode f16 correctly and interpret it as u16. From the programs I tested, only GIMP and Photoshop decode them correctly.)

TODO:

  • I left a TODO on ExtendedColorType, because I probably messed up the order of variants, which breaks serde backwards compat.
  • The f16 -> f32 conversion itself is less efficient than necessary. The half crate has optimized methods for converting a slice of f16s to a slice of f32s, but that requires taking half as a direct dependency. We need to decide whether we want that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support decoding f16 TIFF images following the tiff crate

1 participant