Browse Source

Ensure transparency is written

pull/2289/head
James Jackson-South 4 years ago
parent
commit
44906d50e3
  1. 11
      src/ImageSharp/Formats/Gif/GifEncoderCore.cs

11
src/ImageSharp/Formats/Gif/GifEncoderCore.cs

@ -161,8 +161,10 @@ internal sealed class GifEncoderCore : IImageEncoderInternals
ImageFrame<TPixel> frame = image.Frames[i]; ImageFrame<TPixel> frame = image.Frames[i];
ImageFrameMetadata metadata = frame.Metadata; 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); this.WriteGraphicalControlExtension(frameMetadata, transparencyIndex, stream);
} }
@ -223,10 +225,11 @@ internal sealed class GifEncoderCore : IImageEncoderInternals
} }
this.bitDepth = ColorNumerics.GetBitsNeededForColorDepth(quantized.Palette.Length); this.bitDepth = ColorNumerics.GetBitsNeededForColorDepth(quantized.Palette.Length);
int index = GetTransparentIndex(quantized);
if (hasMetadata) if (hasMetadata || index > -1)
{ {
this.WriteGraphicalControlExtension(frameMetadata, GetTransparentIndex(quantized), stream); frameMetadata ??= metadata.GetGifMetadata();
this.WriteGraphicalControlExtension(frameMetadata, index, stream);
} }
this.WriteImageDescriptor(frame, true, stream); this.WriteImageDescriptor(frame, true, stream);

Loading…
Cancel
Save