From c5ce1a8029dcd92ad6c4df173bff860c2d7fd293 Mon Sep 17 00:00:00 2001 From: Ryan Oldenburg Date: Sun, 7 Feb 2021 21:15:02 -0600 Subject: [PATCH] bugfix for minifyBy2 power > 1 --- src/pixie/images.nim | 14 +++++++++----- tests/images/minifiedBy4.png | Bin 0 -> 161 bytes tests/test_images.nim | 6 ++++++ 3 files changed, 15 insertions(+), 5 deletions(-) create mode 100644 tests/images/minifiedBy4.png diff --git a/src/pixie/images.nim b/src/pixie/images.nim index 5426bb8..95bf711 100644 --- a/src/pixie/images.nim +++ b/src/pixie/images.nim @@ -176,15 +176,16 @@ proc minifyBy2*(image: Image, power = 1): Image = if power == 0: return image.copy() + var src = image for i in 1 .. power: - result = newImage(image.width div 2, image.height div 2) + result = newImage(src.width div 2, src.height div 2) for y in 0 ..< result.height: for x in 0 ..< result.width: let - a = image.getRgbaUnsafe(x * 2 + 0, y * 2 + 0) - b = image.getRgbaUnsafe(x * 2 + 1, y * 2 + 0) - c = image.getRgbaUnsafe(x * 2 + 1, y * 2 + 1) - d = image.getRgbaUnsafe(x * 2 + 0, y * 2 + 1) + a = src.getRgbaUnsafe(x * 2 + 0, y * 2 + 0) + b = src.getRgbaUnsafe(x * 2 + 1, y * 2 + 0) + c = src.getRgbaUnsafe(x * 2 + 1, y * 2 + 1) + d = src.getRgbaUnsafe(x * 2 + 0, y * 2 + 1) let color = rgba( ((a.r.uint32 + b.r + c.r + d.r) div 4).uint8, @@ -195,6 +196,9 @@ proc minifyBy2*(image: Image, power = 1): Image = result.setRgbaUnsafe(x, y, color) + # Set src as this result for if we do another power + src = result + proc magnifyBy2*(image: Image, power = 1): Image = ## Scales image image up by 2 ^ power. if power < 0: diff --git a/tests/images/minifiedBy4.png b/tests/images/minifiedBy4.png new file mode 100644 index 0000000000000000000000000000000000000000..6e5769b2b757cf262dec690bed767f63c79ed920 GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAI8J;eVAr*{or)=bHFc4t&|K%#t zdiKY~Nr5v|PRx7|JK>f7rYUS|cI-&lc;Z*3!f}