Historical recommendation model — illustrative source × operation × output choices
These recommendations are design examples, not a current converter support table or a lossless guarantee. Use the live explorer to execute a route and the guide for current APIs.
| Rule | When | Why |
|---|---|---|
| Unclamped required | ResizeSharp working format | Lanczos/CatmullRom overshoot from ringing — clamping causes visible banding at high-contrast edges |
| Unclamped required | JPEG extended f32 decode | IDCT ringing preserved for smoother re-encoding |
| Unclamped OK | ResizeGentle, any f32 transfer | Mitchell has minor overshoot; no harm preserving |
| Clamp after op | Tonemap, IccTransform, OklabAdjust, Composite | Operations produce bounded output; clamp to [0,1] |
| Clamp before encode | All integer-backed codecs | u8/u16 encoders silently clamp; explicit clamp is cleaner |
| No clamp needed | JXL f32, PNM PFM | Can store arbitrary float values |
| Codec | ICC Decode | ICC Encode | CICP | Notes |
|---|---|---|---|---|
| JPEG | Yes | Yes | No | APP2 ICC marker |
| WebP | Yes | Yes | No | RIFF ICCP chunk |
| PNG | Yes | Yes | Yes | iCCP + cICP chunks |
| AVIF | Yes | No | Yes | ICC decode only; CICP in ISOBMFF/AV1 |
| JXL | Yes | Yes | Yes | ICC in codestream; CICP via metadata |
| GIF | No | No | No | No color management |
| BMP | No | No | No | No color management |
| Farbfeld | No | No | No | No color management |
| PNM | No | No | No | No color management |