Skip to main content

dicom_toolkit_codec/jpeg/
params.rs

1//! JPEG encoding parameters.
2
3use jpeg_encoder::SamplingFactor;
4
5/// JPEG baseline/extended encoding parameters.
6#[derive(Debug, Clone)]
7pub struct JpegParams {
8    /// JPEG quality factor 1–100. 75 is a typical clinical default.
9    pub quality: u8,
10    /// Chroma sub-sampling factor for color images.
11    pub sampling_factor: SamplingFactor,
12    /// Whether to write a JFIF APP0 header (required for some viewers).
13    pub write_jfif: bool,
14}
15
16impl Default for JpegParams {
17    fn default() -> Self {
18        Self {
19            quality: 75,
20            sampling_factor: SamplingFactor::F_2_2,
21            write_jfif: true,
22        }
23    }
24}
25
26impl JpegParams {
27    /// High-quality baseline/extended parameters (quality=100, no sub-sampling).
28    ///
29    /// This improves fidelity, but it is still not classic JPEG Lossless
30    /// Process 14. Use `encode_jpeg_lossless(...)` for true lossless output.
31    pub fn lossless() -> Self {
32        Self {
33            quality: 100,
34            sampling_factor: SamplingFactor::F_1_1,
35            write_jfif: true,
36        }
37    }
38}