From 00ef0d9475d9df5f7e769a819b547d67196098a1 Mon Sep 17 00:00:00 2001 From: Vladislav Richter Date: Mon, 8 Feb 2016 11:43:45 +0100 Subject: [PATCH 1/2] Update ByteExtensions.cs Original implementation didn't work for bit-length of 4 Former-commit-id: bc96d70df88c933fc10b815a9b08327bbdae5461 Former-commit-id: 2678a00b2afc86526cffd3bb68d6bb5be1652a92 Former-commit-id: d64de4730e2465cb9e89c1d7c673ca86d2893523 --- src/ImageProcessorCore/Common/Extensions/ByteExtensions.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/ImageProcessorCore/Common/Extensions/ByteExtensions.cs b/src/ImageProcessorCore/Common/Extensions/ByteExtensions.cs index b72ce9d26..e4657511a 100644 --- a/src/ImageProcessorCore/Common/Extensions/ByteExtensions.cs +++ b/src/ImageProcessorCore/Common/Extensions/ByteExtensions.cs @@ -32,7 +32,8 @@ namespace ImageProcessorCore { result = new byte[bytes.Length * 8 / bits]; - int factor = (int)Math.Pow(2, bits) - 1; + // BUGFIX I dont think it should be there, but I am not sure if it breaks something else + //int factor = (int)Math.Pow(2, bits) - 1; int mask = 0xFF >> (8 - bits); int resultOffset = 0; @@ -40,7 +41,7 @@ namespace ImageProcessorCore { for (int shift = 0; shift < 8; shift += bits) { - int colorIndex = ((b >> (8 - bits - shift)) & mask) * (255 / factor); + int colorIndex = ((b >> (8 - bits - shift)) & mask); // * (255 / factor); result[resultOffset] = (byte)colorIndex; From 4f9e004063db53728da0d454e03da19a17326157 Mon Sep 17 00:00:00 2001 From: Vladislav Richter Date: Mon, 8 Feb 2016 11:45:23 +0100 Subject: [PATCH 2/2] Update PaletteIndexReader.cs Almost certainly a typo in the original implementation, pallete was ignored completely Former-commit-id: 8684abdcebf848782b6f624241939f17c50ba563 Former-commit-id: ab4424fbafa82720745e3c92f1b749a6a8ea0305 Former-commit-id: 8737ade7b5ebd167ebf87b228bcbd967b890c6d4 --- src/ImageProcessorCore/Formats/Png/PaletteIndexReader.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/ImageProcessorCore/Formats/Png/PaletteIndexReader.cs b/src/ImageProcessorCore/Formats/Png/PaletteIndexReader.cs index e10181923..40de59dbb 100644 --- a/src/ImageProcessorCore/Formats/Png/PaletteIndexReader.cs +++ b/src/ImageProcessorCore/Formats/Png/PaletteIndexReader.cs @@ -56,9 +56,10 @@ namespace ImageProcessorCore.Formats offset = ((this.row * header.Width) + i) * 4; int pixelOffset = index * 3; - float r = newScanline[pixelOffset] / 255f; - float g = newScanline[pixelOffset + 1] / 255f; - float b = newScanline[pixelOffset + 2] / 255f; + // BUGFIX changed newScanline[] to this.palette[] , 99% sure it was a typo and not intent + float r = this.palette[pixelOffset] / 255f; + float g = this.palette[pixelOffset + 1] / 255f; + float b = this.palette[pixelOffset + 2] / 255f; float a = this.paletteAlpha.Length > index ? this.paletteAlpha[index] / 255f : 1;