From 44906d50e32c89bb0c894348021fa5f5886571a9 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Mon, 7 Nov 2022 20:27:39 +1000 Subject: [PATCH] Ensure transparency is written --- src/ImageSharp/Formats/Gif/GifEncoderCore.cs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs index 716cb9da3f..6ba0493384 100644 --- a/src/ImageSharp/Formats/Gif/GifEncoderCore.cs +++ b/src/ImageSharp/Formats/Gif/GifEncoderCore.cs @@ -161,8 +161,10 @@ internal sealed class GifEncoderCore : IImageEncoderInternals ImageFrame frame = image.Frames[i]; ImageFrameMetadata metadata = frame.Metadata; - if (metadata.TryGetGifMetadata(out GifFrameMetadata frameMetadata)) + bool hasMeta = metadata.TryGetGifMetadata(out GifFrameMetadata frameMetadata); + if (hasMeta || transparencyIndex > -1) { + frameMetadata ??= metadata.GetGifMetadata(); this.WriteGraphicalControlExtension(frameMetadata, transparencyIndex, stream); } @@ -223,10 +225,11 @@ internal sealed class GifEncoderCore : IImageEncoderInternals } this.bitDepth = ColorNumerics.GetBitsNeededForColorDepth(quantized.Palette.Length); - - if (hasMetadata) + int index = GetTransparentIndex(quantized); + if (hasMetadata || index > -1) { - this.WriteGraphicalControlExtension(frameMetadata, GetTransparentIndex(quantized), stream); + frameMetadata ??= metadata.GetGifMetadata(); + this.WriteGraphicalControlExtension(frameMetadata, index, stream); } this.WriteImageDescriptor(frame, true, stream);