Browse Source

Use memory allocator in Gif encoder

pull/1918/head
Ynse Hoornenborg 4 years ago
parent
commit
f4510132fc
  1. 9
      src/ImageSharp/Formats/Gif/GifEncoderCore.cs

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

@ -427,11 +427,13 @@ namespace SixLabors.ImageSharp.Formats.Gif
private void WriteExtension<TGifExtension>(TGifExtension extension, Stream stream)
where TGifExtension : struct, IGifExtension
{
byte[] buffer;
IMemoryOwner<byte> owner = null;
Span<byte> buffer;
int extensionSize = extension.ContentLength;
if (extensionSize > this.buffer.Length - 3)
{
buffer = new byte[extensionSize + 3];
owner = this.memoryAllocator.Allocate<byte>(extensionSize + 3);
buffer = owner.GetSpan();
}
else
{
@ -441,11 +443,12 @@ namespace SixLabors.ImageSharp.Formats.Gif
buffer[0] = GifConstants.ExtensionIntroducer;
buffer[1] = extension.Label;
extension.WriteTo(buffer.AsSpan(2));
extension.WriteTo(buffer.Slice(2));
buffer[extensionSize + 2] = GifConstants.Terminator;
stream.Write(buffer, 0, extensionSize + 3);
owner?.Dispose();
}
/// <summary>

Loading…
Cancel
Save