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];
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);

Loading…
Cancel
Save