Advertisement
Guest User

Untitled

a guest
Jan 18th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.86 KB | None | 0 0
  1. public static void main(String[] args) {
  2. Img img1 = new Img(4000, 4000);
  3.  
  4.  
  5. Img img2 = new Img(4000, 4000) {
  6. @Override
  7. public Pixel getPixel() {
  8. return new Pixol(this, 0);
  9. }
  10.  
  11. @Override
  12. public Pixel getPixel(int x, int y) {
  13. return new Pixol(this, x, y);
  14. }
  15. };
  16.  
  17. img1.forEach(px->{px.setValue(0xff000000|px.getIndex());});
  18. img2.forEach(px->{px.setValue(0xff000000|px.getIndex());});
  19.  
  20. BiConsumer<Pixel, Img> filter = (px, copy)->{
  21. int size = 25;
  22. int sum = 0;
  23. for(int y = -size; y <= size; y++)
  24. for(int x = -size; x <= size; x++){
  25. sum += Pixel.getLuminance(copy.getValue(px.getX()+x, px.getY()+y, Img.boundary_mode_mirror));
  26. }
  27. sum /= (size+size+1)*(size+size+1);
  28. px.setRGB(sum, sum, sum);
  29. };
  30.  
  31. Img cp1 = img1.copy();
  32. Img cp2 = img2.copy();
  33.  
  34. img1.setSpliteratorMinimumSplitSize(1024*32);
  35. img2.setSpliteratorMinimumSplitSize(1024*32);
  36.  
  37. long t = System.nanoTime();
  38. img1.forEachParallel(px->{filter.accept(px, cp1);});
  39. t = System.nanoTime()-t;
  40.  
  41. System.out.println(t/1000.0);
  42.  
  43. t = System.nanoTime();
  44. img2.forEachParallel(px->{filter.accept(px, cp2);});
  45. t = System.nanoTime()-t;
  46.  
  47. System.out.println(t/1000.0);
  48.  
  49. ImageSaver.saveImage(img1.getRemoteBufferedImage(), "img1.png");
  50. ImageSaver.saveImage(img2.getRemoteBufferedImage(), "img2.png");
  51.  
  52. }
  53.  
  54. static class Pixol extends Pixel {
  55.  
  56. private int xCached = -1;
  57. private int yCached = -1;
  58.  
  59. public Pixol(Img img, int index) {
  60. super(img, index);
  61. }
  62.  
  63. public Pixol(Img img, int x, int y) {
  64. super(img, x, y);
  65. }
  66.  
  67. @Override
  68. public int getX() {
  69. return xCached == -1 ? (xCached = super.getX()):xCached;
  70. }
  71.  
  72. @Override
  73. public int getY() {
  74. return yCached == -1 ? (yCached = super.getY()):yCached;
  75. }
  76.  
  77. @Override
  78. public void setIndex(int index) {
  79. xCached = -1;
  80. yCached = -1;
  81. super.setIndex(index);
  82. }
  83.  
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement