From 1ee20f16873258906d3d901af48ec20608dfff72 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: 34ae097ff85b6d0a707b6509f2fad3883840c66e Former-commit-id: 96600ea9faa442c35850c918ba39fcc32a59bcf6 Former-commit-id: e60095ab103c4ff8ff70699c78f8df9d48b70982 --- .../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 e29a310e54..1d4d3b3f73 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 ec00bf5081..bcb8e79fbc 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); } ///