James Jackson-South
5 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with
20 additions and
2 deletions
-
src/ImageSharp/Processing/Processors/Quantization/OctreeQuantizer{TPixel}.cs
-
tests/ImageSharp.Tests/Quantization/QuantizedImageTests.cs
-
tests/ImageSharp.Tests/TestImages.cs
-
tests/Images/Input/Gif/issues/issue1505_argumentoutofrange.png
|
|
|
@ -6,7 +6,6 @@ using System.Buffers; |
|
|
|
using System.Numerics; |
|
|
|
using System.Runtime.CompilerServices; |
|
|
|
using System.Runtime.InteropServices; |
|
|
|
using SixLabors.ImageSharp.Advanced; |
|
|
|
using SixLabors.ImageSharp.Memory; |
|
|
|
using SixLabors.ImageSharp.PixelFormats; |
|
|
|
|
|
|
|
@ -96,7 +95,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Quantization |
|
|
|
this.octree.Palletize(paletteSpan, this.maxColors, ref paletteIndex); |
|
|
|
|
|
|
|
// Length of reduced palette + transparency.
|
|
|
|
ReadOnlyMemory<TPixel> result = this.paletteOwner.Memory.Slice(0, Math.Min(paletteIndex + 2, QuantizerConstants.MaxColors)); |
|
|
|
ReadOnlyMemory<TPixel> result = this.paletteOwner.Memory.Slice(0, Math.Min(paletteIndex + 2, this.maxColors)); |
|
|
|
this.pixelMap = new EuclideanPixelMap<TPixel>(this.Configuration, result); |
|
|
|
|
|
|
|
this.palette = result; |
|
|
|
|
|
|
|
@ -110,6 +110,21 @@ namespace SixLabors.ImageSharp.Tests |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// Test case for issue: https://github.com/SixLabors/ImageSharp/issues/1505
|
|
|
|
[Theory] |
|
|
|
[WithFile(TestImages.Gif.Issues.Issue1505, PixelTypes.Rgba32)] |
|
|
|
public void Issue1505<TPixel>(TestImageProvider<TPixel> provider) |
|
|
|
where TPixel : unmanaged, IPixel<TPixel> |
|
|
|
{ |
|
|
|
using (Image<TPixel> image = provider.GetImage()) |
|
|
|
{ |
|
|
|
var octreeQuantizer = new OctreeQuantizer(); |
|
|
|
IQuantizer<TPixel> quantizer = octreeQuantizer.CreatePixelSpecificQuantizer<TPixel>(Configuration.Default, new QuantizerOptions() { MaxColors = 128 }); |
|
|
|
ImageFrame<TPixel> frame = image.Frames[0]; |
|
|
|
quantizer.BuildPaletteAndQuantizeFrame(frame, frame.Bounds()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private int GetTransparentIndex<TPixel>(IndexedImageFrame<TPixel> quantized) |
|
|
|
where TPixel : unmanaged, IPixel<TPixel> |
|
|
|
{ |
|
|
|
|
|
|
|
@ -415,6 +415,7 @@ namespace SixLabors.ImageSharp.Tests |
|
|
|
public const string BadAppExtLength = "Gif/issues/issue405_badappextlength252.gif"; |
|
|
|
public const string BadAppExtLength_2 = "Gif/issues/issue405_badappextlength252-2.gif"; |
|
|
|
public const string BadDescriptorWidth = "Gif/issues/issue403_baddescriptorwidth.gif"; |
|
|
|
public const string Issue1505 = "Gif/issues/issue1505_argumentoutofrange.png"; |
|
|
|
} |
|
|
|
|
|
|
|
public static readonly string[] All = { Rings, Giphy, Cheers, Trans, Kumin, Leo, Ratio4x1, Ratio1x4 }; |
|
|
|
|
|
|
|
@ -0,0 +1,3 @@ |
|
|
|
version https://git-lfs.github.com/spec/v1 |
|
|
|
oid sha256:bea0faf09782d0d972e72ad94e53b8ca9c823fd3056fc6a97aba8c43105fcd66 |
|
|
|
size 102581 |