From 93526d895590b1540d1a36bbeda387b0c2d0e7e6 Mon Sep 17 00:00:00 2001 From: Jeff Xu Date: Tue, 23 Apr 2019 14:16:57 -0400 Subject: [PATCH 1/2] Can decode pixels for 16 bitDepth grey image correctly. --- PNG.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/PNG.js b/PNG.js index b1e0f48..5b44178 100644 --- a/PNG.js +++ b/PNG.js @@ -162,7 +162,12 @@ PNG.prototype.getPixel = function(x, y){ this.palette[pixels[i] * 3 + 1], this.palette[pixels[i] * 3 + 2], alpha]; - case 4: return [pixels[i], pixels[i], pixels[i], pixels[i + 1]]; + case 4: + if (this.bitDepth == 8) { + return [pixels[i], pixels[i], pixels[i], pixels[i + 1]]; + } else { + return [pixels[i + 1], pixels[i + 1], pixels[i + 1], pixels[i + 3]]; + } case 6: return [pixels[i], pixels[i + 1], pixels[i + 2], pixels[i + 3]]; } }; From 37c89540f09ec64b5017a280fd0d24185b611a35 Mon Sep 17 00:00:00 2001 From: Jeff Xu Date: Tue, 4 Jun 2019 08:37:26 -0400 Subject: [PATCH 2/2] Also handle 16 bitDepth RGB image --- PNG.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/PNG.js b/PNG.js index 5b44178..24b78d0 100644 --- a/PNG.js +++ b/PNG.js @@ -168,7 +168,12 @@ PNG.prototype.getPixel = function(x, y){ } else { return [pixels[i + 1], pixels[i + 1], pixels[i + 1], pixels[i + 3]]; } - case 6: return [pixels[i], pixels[i + 1], pixels[i + 2], pixels[i + 3]]; + case 6: + if (this.bitDepth == 8) { + return [pixels[i], pixels[i + 1], pixels[i + 2], pixels[i + 3]]; + } else { + return [pixels[i + 1], pixels[i + 3], pixels[i + 5], pixels[i + 7]]; + } } };