Skip to content

feat: add LosslessMode enum (Lossy / NearLossless / Lossless) #12

@lilith

Description

@lilith

Summary

  • with_lossless(bool) can't express near-lossless modes that WebP, JXL, and PNG support
  • WebP: with_near_lossless(0-100) pre-rounds pixels in VP8L lossless path
  • JXL: distance 0.0-1.0 "perceptually lossless zone" (distinct from Modular lossless)
  • PNG: with_near_lossless_bits(1-4) rounds LSBs before DEFLATE
  • AVIF, JPEG, GIF have no near-lossless mode

Proposal

Add to EncoderConfig trait:

enum LosslessMode {
    Lossy,
    NearLossless,
    Lossless,
}

Codecs without near-lossless treat NearLossless as high-quality lossy. Replaces with_lossless(bool) (deprecate, keep working via trueLossless, falseLossy).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions