private static void applyBlur(int[] pixels, int stride) { int v0, v1, v2, r, g, b; int pos; pos = 0; try { while (true) { v0 = pixels[pos]; v1 = pixels[pos+1]; v2 = pixels[pos+2]; r = ((v0 >> 16) & 0xFF) + ((v1 >> 16) & 0xFF) + ((v2 >> 16) & 0xFF); g = ((v0 >> 8 ) & 0xFF) + ((v1 >> 8) & 0xFF) + ((v2 >> 8) & 0xFF); b = ((v0 ) & 0xFF) + ((v1 ) & 0xFF) + ((v2 ) & 0xFF); r/=3; g/=3; b/=3; pixels[pos++] = r << 16 | g << 8 | b; } } catch (ArrayIndexOutOfBoundsException e) { } pos = 0; try { while (true) { v0 = pixels[pos]; v1 = pixels[pos+stride]; v2 = pixels[pos+stride+stride]; r = ((v0 >> 16) & 0xFF) + ((v1 >> 16) & 0xFF) + ((v2 >> 16) & 0xFF); g = ((v0 >> 8 ) & 0xFF) + ((v1 >> 8) & 0xFF) + ((v2 >> 8) & 0xFF); b = ((v0 ) & 0xFF) + ((v1 ) & 0xFF) + ((v2 ) & 0xFF); r/=3; g/=3; b/=3; pixels[pos++] = r << 16 | g << 8 | b; } } catch (ArrayIndexOutOfBoundsException e) { } }
Tuesday, July 12, 2016
Fastest Pure Code Java Box Blur
----- Behold.
Admittedly it'll fill the side two garbage pixels on the right with looped garbage but it doesn't bother to slow down to check when those happen. Stride is typically equal to width.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment