From 54ee621e41518dbcf99aaeee61eb38e57844b3fc Mon Sep 17 00:00:00 2001 From: andrews05 Date: Fri, 9 Dec 2022 00:11:26 +1300 Subject: [PATCH] Fix Grayscale depth reduction with tRNS (#470) --- src/reduction/bit_depth.rs | 24 +++++++++++++++++++++++- tests/files/issue-426-01.png | Bin 0 -> 13489 bytes tests/files/issue-426-02.png | Bin 0 -> 13489 bytes tests/regression.rs | 24 ++++++++++++++++++++++++ 4 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 tests/files/issue-426-01.png create mode 100644 tests/files/issue-426-02.png diff --git a/src/reduction/bit_depth.rs b/src/reduction/bit_depth.rs index e29a7075..7c8af41b 100644 --- a/src/reduction/bit_depth.rs +++ b/src/reduction/bit_depth.rs @@ -144,6 +144,28 @@ pub fn reduce_bit_depth_8_or_less(png: &PngImage, mut minimum_bits: usize) -> Op } } + // If the image is grayscale we also need to reduce the transparency pixel + let mut transparency_pixel = png + .transparency_pixel + .clone() + .filter(|t| png.ihdr.color_type == ColorType::Grayscale && t.len() >= 2); + if let Some(trans) = transparency_pixel { + let reduced_trans = trans[1] >> (bit_depth - minimum_bits); + // Verify the reduction is valid by restoring back to original bit depth + let mut check = reduced_trans; + let mut bits = minimum_bits; + while bits < bit_depth { + check = check << bits | check; + bits <<= 1; + } + if trans[0] == 0 && trans[1] == check { + transparency_pixel = Some(vec![0, reduced_trans]); + } else { + // The transparency doesn't fit the new bit depth and is therefore unused - set it to None + transparency_pixel = None; + } + } + Some(PngImage { data: reduced.as_raw_slice().to_vec(), ihdr: IhdrData { @@ -152,6 +174,6 @@ pub fn reduce_bit_depth_8_or_less(png: &PngImage, mut minimum_bits: usize) -> Op }, aux_headers: png.aux_headers.clone(), palette: png.palette.clone(), - transparency_pixel: png.transparency_pixel.clone(), + transparency_pixel, }) } diff --git a/tests/files/issue-426-01.png b/tests/files/issue-426-01.png new file mode 100644 index 0000000000000000000000000000000000000000..7349d388275a50bdbe60aedc325ad0876c8bd101 GIT binary patch literal 13489 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�k-NZ-`>h&~-8w~krF5j3euJp&{ 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 literal 0 HcmV?d00001 diff --git a/tests/regression.rs b/tests/regression.rs index 6fb119ca..30797d3d 100644 --- a/tests/regression.rs +++ b/tests/regression.rs @@ -642,3 +642,27 @@ fn issue_195() { BitDepth::Eight, ); } + +#[test] +fn issue_426_01() { + test_it_converts( + "tests/files/issue-426-01.png", + None, + ColorType::Grayscale, + BitDepth::Eight, + ColorType::Grayscale, + BitDepth::One, + ); +} + +#[test] +fn issue_426_02() { + test_it_converts( + "tests/files/issue-426-02.png", + None, + ColorType::Grayscale, + BitDepth::Eight, + ColorType::Grayscale, + BitDepth::One, + ); +}