Libraryless. Click here for Pure Java version (13454L/76K).
// same brightness level count for each channel for now sclass PosterizeBufferedImage is PixelPreservingImageOpResult<BufferedImage> { BufferedImage img; BufferedImage result; IPosterizer posterizer; CachedPosterizer cachedPosterizer; *(int brightnessLevels, BufferedImage *img) { if (brightnessLevels >= 256 || img == null) posterizer = new DummyPosterizer; posterizer = SinglePixelPosterizer(brightnessLevels); } *(IPosterizer *posterizer, BufferedImage *img) {} run { if (img == null) ret; if (posterizer cast DummyPosterizer) ret with result = img; GrabbableIntPixels gp = grabbableIntPixels_fastOrSlow(img); int w = img.getWidth(), h = img.getHeight(), n = w*h; int[] pixels = gp.data; int[] pixels2 = new[n]; cachePosterizer(); var cachedPosterizer = this.cachedPosterizer; int iOut = 0, iIn = gp.offset; for y to h: { for x to w: { int rgb = pixels[iIn+x]; pixels2[iOut++] = rgbInt( cachedPosterizer.get(rgbRed(rgb)), cachedPosterizer.get(rgbGreen(rgb)), cachedPosterizer.get(rgbBlue(rgb))); } iIn += gp.scanlineStride; } result = bufferedImageWithoutAlpha(w, h, pixels2); } public BufferedImage pixelPreservingSrcImage() { ret img; } BufferedImage get() { if (result == null) run(); ret result; } private void cachePosterizer { if (cachedPosterizer == null) cachedPosterizer = main cachePosterizer(posterizer); } }
Began life as a copy of #1033935
download show line numbers debug dex old transpilations
Travelled to 4 computer(s): bhatertpkbcr, ekrmjmnbrukm, mowyntqkapby, mqqgnosmbjvj
No comments. add comment
Snippet ID: | #1035253 |
Snippet name: | PosterizeBufferedImage |
Eternal ID of this version: | #1035253/11 |
Text MD5: | 5ecd7852ce73f224903be420806d5328 |
Transpilation MD5: | fef8498edafe81b6073850d34c81efa8 |
Author: | stefan |
Category: | javax / imaging |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2022-07-17 22:19:29 |
Source code size: | 1567 bytes / 51 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 161 / 276 |
Version history: | 10 change(s) |
Referenced in: | [show references] |