defmodule Image.Plug.Pipeline.Ops.Format do @moduledoc """ Output format / encoder configuration. Lives on the pipeline rather than in the op list — there is exactly one per pipeline. `:type` is the requested output format; `:auto` defers to content negotiation (Accept header) at encode time. The encoder may substitute a fallback format and add a header noting the substitution (currently only `:avif -> :webp` when libvips lacks AVIF support). """ @type type :: :auto | :avif | :webp | :jpeg | :baseline_jpeg | :png | :gif | :tiff | :jp2 | :pdf | :json @type metadata :: :copyright | :keep | :none @type compression :: nil | :fast @type chroma_subsampling :: nil | :auto | :on | :off @type t :: %__MODULE__{ type: type(), quality: 1..100, metadata: metadata(), anim?: boolean(), dpr: pos_integer(), compression: compression(), scq_quality: nil | 1..100, lossy: nil | boolean(), progressive: nil | boolean(), chroma_subsampling: chroma_subsampling() } defstruct type: :auto, quality: 85, metadata: :copyright, anim?: true, dpr: 1, compression: nil, scq_quality: nil, lossy: nil, progressive: nil, chroma_subsampling: nil end