From ae8ab3d99dabafe121265cdbe60ea820de88fbfa Mon Sep 17 00:00:00 2001 From: Yufei Huang Date: Mon, 24 Aug 2015 16:38:13 +0800 Subject: [PATCH] Fix quantizer Former-commit-id: 5b79f56d1d4a7660e65fc63feb0ee9389396571d Former-commit-id: 119f108657f15b49dc20d6f51bf9f11cb76390ef Former-commit-id: a07d5756efa4206bf7f974be98014877c14c1159 --- .../Formats/Gif/Quantizer/QuantizedImage.cs | 12 ++++++------ .../Formats/Gif/Quantizer/Quantizer.cs | 4 +++- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/ImageProcessor/Formats/Gif/Quantizer/QuantizedImage.cs b/src/ImageProcessor/Formats/Gif/Quantizer/QuantizedImage.cs index e29a310e5..1d4d3b3f7 100644 --- a/src/ImageProcessor/Formats/Gif/Quantizer/QuantizedImage.cs +++ b/src/ImageProcessor/Formats/Gif/Quantizer/QuantizedImage.cs @@ -60,18 +60,18 @@ namespace ImageProcessor.Formats /// public Image ToImage() { - // TODO: Something is going wrong here. We have a palette. Image image = new Image(); int pixelCount = Pixels.Length; byte[] bgraPixels = new byte[pixelCount * 4]; - for (int i = 0; i < pixelCount; i += 4) + for (int i = 0; i < pixelCount; i++) { + int j = i * 4; Bgra color = Palette[Pixels[i]]; - bgraPixels[i + 0] = color.B; - bgraPixels[i + 1] = color.G; - bgraPixels[i + 2] = color.R; - bgraPixels[i + 3] = color.A; + bgraPixels[j + 0] = color.B; + bgraPixels[j + 1] = color.G; + bgraPixels[j + 2] = color.R; + bgraPixels[j + 3] = color.A; } image.SetPixels(Width, Height, bgraPixels); diff --git a/src/ImageProcessor/Formats/Gif/Quantizer/Quantizer.cs b/src/ImageProcessor/Formats/Gif/Quantizer/Quantizer.cs index ec00bf508..bcb8e79fb 100644 --- a/src/ImageProcessor/Formats/Gif/Quantizer/Quantizer.cs +++ b/src/ImageProcessor/Formats/Gif/Quantizer/Quantizer.cs @@ -61,9 +61,11 @@ namespace ImageProcessor.Formats byte[] quantizedPixels = new byte[width * height]; + List palette = GetPalette(); + this.SecondPass(imageBase, quantizedPixels, width, height); - return new QuantizedImage(width, height, this.GetPalette().ToArray(), quantizedPixels); + return new QuantizedImage(width, height, palette.ToArray(), quantizedPixels); } ///