From fbde4f32fd501542d99e59c639d3f1154174240e Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Thu, 18 Oct 2018 17:04:41 +0100 Subject: [PATCH] Use scaled luminance trns comparison. --- .../Formats/Png/PngScanlineProcessor.cs | 6 ++++-- .../Formats/Png/PngDecoderTests.cs | 3 ++- tests/ImageSharp.Tests/TestImages.cs | 1 + tests/Images/Input/Png/gray-1-trns.png | Bin 0 -> 366 bytes 4 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 tests/Images/Input/Png/gray-1-trns.png diff --git a/src/ImageSharp/Formats/Png/PngScanlineProcessor.cs b/src/ImageSharp/Formats/Png/PngScanlineProcessor.cs index 6c81ba76c2..5ea25e72d4 100644 --- a/src/ImageSharp/Formats/Png/PngScanlineProcessor.cs +++ b/src/ImageSharp/Formats/Png/PngScanlineProcessor.cs @@ -80,6 +80,7 @@ namespace SixLabors.ImageSharp.Formats.Png } else { + byte scaledLuminanceTrans = (byte)(luminanceTrans * scaleFactor); Rgba32 rgba32 = default; for (int x = 0; x < header.Width; x++) { @@ -87,7 +88,7 @@ namespace SixLabors.ImageSharp.Formats.Png rgba32.R = luminance; rgba32.G = luminance; rgba32.B = luminance; - rgba32.A = luminance.Equals(luminanceTrans) ? byte.MinValue : byte.MaxValue; + rgba32.A = luminance.Equals(scaledLuminanceTrans) ? byte.MinValue : byte.MaxValue; pixel.PackFromRgba32(rgba32); Unsafe.Add(ref rowSpanRef, x) = pixel; @@ -163,6 +164,7 @@ namespace SixLabors.ImageSharp.Formats.Png } else { + byte scaledLuminanceTrans = (byte)(luminanceTrans * scaleFactor); Rgba32 rgba32 = default; for (int x = pixelOffset; x < header.Width; x += increment) { @@ -170,7 +172,7 @@ namespace SixLabors.ImageSharp.Formats.Png rgba32.R = luminance; rgba32.G = luminance; rgba32.B = luminance; - rgba32.A = luminance.Equals(luminanceTrans) ? byte.MinValue : byte.MaxValue; + rgba32.A = luminance.Equals(scaledLuminanceTrans) ? byte.MinValue : byte.MaxValue; pixel.PackFromRgba32(rgba32); Unsafe.Add(ref rowSpanRef, x) = pixel; diff --git a/tests/ImageSharp.Tests/Formats/Png/PngDecoderTests.cs b/tests/ImageSharp.Tests/Formats/Png/PngDecoderTests.cs index 54f3e397c3..f51f9b6c5c 100644 --- a/tests/ImageSharp.Tests/Formats/Png/PngDecoderTests.cs +++ b/tests/ImageSharp.Tests/Formats/Png/PngDecoderTests.cs @@ -40,7 +40,8 @@ namespace SixLabors.ImageSharp.Tests.Formats.Png TestImages.Png.VimImage2, TestImages.Png.Rgb24BppTrans, - TestImages.Png.GrayAlpha8Bit + TestImages.Png.GrayAlpha8Bit, + TestImages.Png.Gray1BitTrans }; public static readonly string[] TestImages48Bpp = diff --git a/tests/ImageSharp.Tests/TestImages.cs b/tests/ImageSharp.Tests/TestImages.cs index fdf586c430..758f256345 100644 --- a/tests/ImageSharp.Tests/TestImages.cs +++ b/tests/ImageSharp.Tests/TestImages.cs @@ -45,6 +45,7 @@ namespace SixLabors.ImageSharp.Tests public const string Kaboom = "Png/kaboom.png"; public const string PDSrc = "Png/pd-source.png"; public const string PDDest = "Png/pd-dest.png"; + public const string Gray1BitTrans = "Png/gray-1-trns.png"; // Filtered test images from http://www.schaik.com/pngsuite/pngsuite_fil_png.html public const string Filter0 = "Png/filter0.png"; diff --git a/tests/Images/Input/Png/gray-1-trns.png b/tests/Images/Input/Png/gray-1-trns.png new file mode 100644 index 0000000000000000000000000000000000000000..99b288d52666f930ba760226e0687fd16c18e967 GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0y~yVAN$`VCrH73NSci8gu|Drjj7PU~)y|GZ}kOL3P1p|(h`kCj~HI)TOcnDs2`|;Yn&D&2d zc^7STeg3AM*X9_!nQ1%k9^2s!>o-0rI$*$ac*DU6>$&Pc+F)ADDv7qN_JtVTp*E8bj_RaPgn@lz~JfX=d#Wzp$Pzp C@PiTn literal 0 HcmV?d00001