diff --git a/src/ImageSharp/Formats/Png/IPngEncoderOptions.cs b/src/ImageSharp/Formats/Png/IPngEncoderOptions.cs index f5113d3d9..be510b156 100644 --- a/src/ImageSharp/Formats/Png/IPngEncoderOptions.cs +++ b/src/ImageSharp/Formats/Png/IPngEncoderOptions.cs @@ -62,5 +62,10 @@ namespace SixLabors.ImageSharp.Formats.Png /// Gets the optimize method. /// PngChunkFilter? ChunkFilter { get; } + + /// + /// Gets a value indicating whether fully transparent pixels should be converted to black pixels. + /// + bool MakeTransparentBlack { get; } } } diff --git a/src/ImageSharp/Formats/Png/PngChunkFilter.cs b/src/ImageSharp/Formats/Png/PngChunkFilter.cs index 49af6ce59..f859d44da 100644 --- a/src/ImageSharp/Formats/Png/PngChunkFilter.cs +++ b/src/ImageSharp/Formats/Png/PngChunkFilter.cs @@ -36,11 +36,6 @@ namespace SixLabors.ImageSharp.Formats.Png /// ExcludeTextChunks = 1 << 3, - /// - /// Make fully transparent pixels black. - /// - MakeTransparentBlack = 16, - /// /// All possible optimizations. /// diff --git a/src/ImageSharp/Formats/Png/PngEncoder.cs b/src/ImageSharp/Formats/Png/PngEncoder.cs index d2eba47de..197506ffd 100644 --- a/src/ImageSharp/Formats/Png/PngEncoder.cs +++ b/src/ImageSharp/Formats/Png/PngEncoder.cs @@ -67,6 +67,11 @@ namespace SixLabors.ImageSharp.Formats.Png /// public PngChunkFilter? ChunkFilter { get; set; } + /// + /// Gets or sets a value indicating whether fully transparent pixels should be converted to black pixels. + /// + public bool MakeTransparentBlack { get; set; } + /// /// Encodes the image to the specified stream from the . /// diff --git a/src/ImageSharp/Formats/Png/PngEncoderCore.cs b/src/ImageSharp/Formats/Png/PngEncoderCore.cs index 1af5929fe..416c26b0f 100644 --- a/src/ImageSharp/Formats/Png/PngEncoderCore.cs +++ b/src/ImageSharp/Formats/Png/PngEncoderCore.cs @@ -7,7 +7,7 @@ using System.Buffers.Binary; using System.IO; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; -using SixLabors.ImageSharp.Advanced; + using SixLabors.ImageSharp.Formats.Png.Chunks; using SixLabors.ImageSharp.Formats.Png.Filters; using SixLabors.ImageSharp.Formats.Png.Zlib; @@ -145,7 +145,7 @@ namespace SixLabors.ImageSharp.Formats.Png PngMetadata pngMetadata = metadata.GetFormatMetadata(PngFormat.Instance); PngEncoderOptionsHelpers.AdjustOptions(this.options, pngMetadata, out this.use16Bit, out this.bytesPerPixel); IndexedImageFrame quantized; - if (((this.options.ChunkFilter ?? PngChunkFilter.None) & PngChunkFilter.MakeTransparentBlack) == PngChunkFilter.MakeTransparentBlack) + if (this.options.MakeTransparentBlack) { using (Image tempImage = image.Clone()) { diff --git a/src/ImageSharp/Formats/Png/PngEncoderOptions.cs b/src/ImageSharp/Formats/Png/PngEncoderOptions.cs index f11a23269..ba8a897ce 100644 --- a/src/ImageSharp/Formats/Png/PngEncoderOptions.cs +++ b/src/ImageSharp/Formats/Png/PngEncoderOptions.cs @@ -30,6 +30,7 @@ namespace SixLabors.ImageSharp.Formats.Png this.Threshold = source.Threshold; this.InterlaceMethod = source.InterlaceMethod; this.ChunkFilter = source.ChunkFilter; + this.MakeTransparentBlack = source.MakeTransparentBlack; } /// @@ -84,5 +85,8 @@ namespace SixLabors.ImageSharp.Formats.Png /// Gets or sets a the optimize method. /// public PngChunkFilter? ChunkFilter { get; set; } + + /// + public bool MakeTransparentBlack { get; set; } } }