From 00b253d1dd4928e6e0b6b9b1f642800471563e16 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Tue, 9 Jul 2024 19:45:52 +0200 Subject: [PATCH] Fix issue in EncodeImage() not using correct histogram image size, fixes #2763 --- src/ImageSharp/Formats/Webp/Lossless/Vp8LEncoder.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/ImageSharp/Formats/Webp/Lossless/Vp8LEncoder.cs b/src/ImageSharp/Formats/Webp/Lossless/Vp8LEncoder.cs index f658e40f6f..8d682c0592 100644 --- a/src/ImageSharp/Formats/Webp/Lossless/Vp8LEncoder.cs +++ b/src/ImageSharp/Formats/Webp/Lossless/Vp8LEncoder.cs @@ -698,6 +698,8 @@ internal class Vp8LEncoder : IDisposable } } + histogramImageSize = maxIndex; + this.bitWriter.PutBits((uint)(this.HistoBits - 2), 3); this.EncodeImageNoHuffman( histogramBgra, @@ -713,7 +715,7 @@ internal class Vp8LEncoder : IDisposable // Store Huffman codes. // Find maximum number of symbols for the huffman tree-set. int maxTokens = 0; - for (int i = 0; i < 5 * histogramImage.Count; i++) + for (int i = 0; i < 5 * histogramImageSize; i++) { HuffmanTreeCode codes = huffmanCodes[i]; if (maxTokens < codes.NumSymbols) @@ -728,7 +730,7 @@ internal class Vp8LEncoder : IDisposable tokens[i] = new HuffmanTreeToken(); } - for (int i = 0; i < 5 * histogramImage.Count; i++) + for (int i = 0; i < 5 * histogramImageSize; i++) { HuffmanTreeCode codes = huffmanCodes[i]; this.StoreHuffmanCode(huffTree, tokens, codes);