Advertisement
Guest User

Untitled

a guest
Jan 28th, 2015
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.58 KB | None | 0 0
  1. /*
  2. Laxeot's Pixel Sorting Script
  3.  
  4. This is free for use, just please credit "Laxeot" or "Brandon Akin" if used
  5. commercially :D
  6. */
  7.  
  8. int mode = 0;
  9.  
  10. //MODE:
  11. //0 -> black
  12. //1 -> bright
  13. //2 -> white
  14. //b(16777216)
  15.  
  16. PImage img;
  17. String imgFileName = "img";
  18. String fileType = "jpg";
  19.  
  20. int loops = 1;
  21.  
  22. int blackValue = -10000000;
  23. int brigthnessValue = 62;
  24. int whiteValue = -6000000;
  25.  
  26. int row = 0;
  27. int column = 0;
  28.  
  29. boolean saved = false;
  30.  
  31. void setup() {
  32.   img = loadImage(imgFileName+"."+fileType);
  33.   size(img.width, img.height);
  34.   image(img, 0, 0);
  35. }
  36.  
  37.  
  38. void draw() {
  39.   while(column < width-1) {
  40.     img.loadPixels();
  41.     sortColumn();
  42.     column++;
  43.     img.updatePixels();
  44.   }
  45.  
  46.   while(row < height-1) {
  47.     img.loadPixels();
  48.     sortRow();
  49.     row++;
  50.     img.updatePixels();
  51.   }
  52.  
  53.   image(img,0,0);
  54.   if(!saved && frameCount >= loops) {
  55.     saveFrame(imgFileName+"_"+mode+".png");
  56.     saved = true;
  57.     println("DONE"+frameCount);
  58.     System.exit(0);
  59.   }
  60. }
  61.  
  62.  
  63. void sortRow() {
  64.   int x = 0;
  65.   int y = row;
  66.   int xend = 0;
  67.  
  68.   while(xend < width-1) {
  69.     switch(mode) {
  70.       case 0:
  71.         x = getFirstNotBlackX(x, y);
  72.         xend = getNextBlackX(x, y);
  73.         break;
  74.       case 1:
  75.         x = getFirstBrightX(x, y);
  76.         xend = getNextDarkX(x, y);
  77.         break;
  78.       case 2:
  79.         x = getFirstNotWhiteX(x, y);
  80.         xend = getNextWhiteX(x, y);
  81.         break;
  82.       default:
  83.         break;
  84.     }
  85.    
  86.     if(x < 0) break;
  87.    
  88.     int sortLength = xend-x;
  89.    
  90.     color[] unsorted = new color[sortLength];
  91.     color[] sorted = new color[sortLength];
  92.    
  93.     for(int i=0; i<sortLength; i++) {
  94.       unsorted[i] = img.pixels[x + i + y * img.width];
  95.     }
  96.    
  97.     sorted = sort(unsorted);
  98.    
  99.     for(int i=0; i<sortLength; i++) {
  100.       img.pixels[x + i + y * img.width] = sorted[i];      
  101.     }
  102.    
  103.     x = xend+1;
  104.   }
  105. }
  106.  
  107.  
  108. void sortColumn() {
  109.   int x = column;
  110.   int y = 0;
  111.   int yend = 0;
  112.  
  113.   while(yend < height-1) {
  114.     switch(mode) {
  115.       case 0:
  116.         y = getFirstNotBlackY(x, y);
  117.         yend = getNextBlackY(x, y);
  118.         break;
  119.       case 1:
  120.         y = getFirstBrightY(x, y);
  121.         yend = getNextDarkY(x, y);
  122.         break;
  123.       case 2:
  124.         y = getFirstNotWhiteY(x, y);
  125.         yend = getNextWhiteY(x, y);
  126.         break;
  127.       default:
  128.         break;
  129.     }
  130.    
  131.     if(y < 0) break;
  132.    
  133.     int sortLength = yend-y;
  134.    
  135.     color[] unsorted = new color[sortLength];
  136.     color[] sorted = new color[sortLength];
  137.    
  138.     for(int i=0; i<sortLength; i++) {
  139.       unsorted[i] = img.pixels[x + (y+i) * img.width];
  140.     }
  141.    
  142.     sorted = sort(unsorted);
  143.    
  144.     for(int i=0; i<sortLength; i++) {
  145.       img.pixels[x + (y+i) * img.width] = sorted[i];
  146.     }
  147.    
  148.     y = yend+1;
  149.   }
  150. }
  151.  
  152.  
  153. //BLACK
  154. int getFirstNotBlackX(int _x, int _y) {
  155.   int x = _x;
  156.   int y = _y;
  157.   color c;
  158.   while((c = img.pixels[x + y * img.width]) < blackValue) {
  159.     x++;
  160.     if(x >= width) return -1;
  161.   }
  162.   return x;
  163. }
  164.  
  165. int getNextBlackX(int _x, int _y) {
  166.   int x = _x+1;
  167.   int y = _y;
  168.   color c;
  169.   while((c = img.pixels[x + y * img.width]) > blackValue) {
  170.     x++;
  171.     if(x >= width) return width-1;
  172.   }
  173.   return x-1;
  174. }
  175.  
  176. //BRIGHTNESS
  177. int getFirstBrightX(int _x, int _y) {
  178.   int x = _x;
  179.   int y = _y;
  180.   color c;
  181.   while(brightness(c = img.pixels[x + y * img.width]) < brigthnessValue) {
  182.     x++;
  183.     if(x >= width) return -1;
  184.   }
  185.   return x;
  186. }
  187.  
  188. int getNextDarkX(int _x, int _y) {
  189.   int x = _x+1;
  190.   int y = _y;
  191.   color c;
  192.   while(brightness(c = img.pixels[x + y * img.width]) > brigthnessValue) {
  193.     x++;
  194.     if(x >= width) return width-1;
  195.   }
  196.   return x-1;
  197. }
  198.  
  199. //WHITE
  200. int getFirstNotWhiteX(int _x, int _y) {
  201.   int x = _x;
  202.   int y = _y;
  203.   color c;
  204.   while((c = img.pixels[x + y * img.width]) > whiteValue) {
  205.     x++;
  206.     if(x >= width) return -1;
  207.   }
  208.   return x;
  209. }
  210.  
  211. int getNextWhiteX(int _x, int _y) {
  212.   int x = _x+1;
  213.   int y = _y;
  214.   color c;
  215.   while((c = img.pixels[x + y * img.width]) < whiteValue) {
  216.     x++;
  217.     if(x >= width) return width-1;
  218.   }
  219.   return x-1;
  220. }
  221.  
  222.  
  223. //BLACK
  224. int getFirstNotBlackY(int _x, int _y) {
  225.   int x = _x;
  226.   int y = _y;
  227.   color c;
  228.   if(y < height) {
  229.     while((c = img.pixels[x + y * img.width]) < blackValue) {
  230.       y++;
  231.       if(y >= height) return -1;
  232.     }
  233.   }
  234.   return y;
  235. }
  236.  
  237. int getNextBlackY(int _x, int _y) {
  238.   int x = _x;
  239.   int y = _y+1;
  240.   color c;
  241.   if(y < height) {
  242.     while((c = img.pixels[x + y * img.width]) > blackValue) {
  243.       y++;
  244.       if(y >= height) return height-1;
  245.     }
  246.   }
  247.   return y-1;
  248. }
  249.  
  250. //BRIGHTNESS
  251. int getFirstBrightY(int _x, int _y) {
  252.   int x = _x;
  253.   int y = _y;
  254.   color c;
  255.   if(y < height) {
  256.     while(brightness(c = img.pixels[x + y * img.width]) < brigthnessValue) {
  257.       y++;
  258.       if(y >= height) return -1;
  259.     }
  260.   }
  261.   return y;
  262. }
  263.  
  264. int getNextDarkY(int _x, int _y) {
  265.   int x = _x;
  266.   int y = _y+1;
  267.   color c;
  268.   if(y < height) {
  269.     while(brightness(c = img.pixels[x + y * img.width]) > brigthnessValue) {
  270.       y++;
  271.       if(y >= height) return height-1;
  272.     }
  273.   }
  274.   return y-1;
  275. }
  276.  
  277. //WHITE
  278. int getFirstNotWhiteY(int _x, int _y) {
  279.   int x = _x;
  280.   int y = _y;
  281.   color c;
  282.   if(y < height) {
  283.     while((c = img.pixels[x + y * img.width]) > whiteValue) {
  284.       y++;
  285.       if(y >= height) return -1;
  286.     }
  287.   }
  288.   return y;
  289. }
  290.  
  291. int getNextWhiteY(int _x, int _y) {
  292.   int x = _x;
  293.   int y = _y+1;
  294.   color c;
  295.   if(y < height) {
  296.     while((c = img.pixels[x + y * img.width]) < whiteValue) {
  297.       y++;
  298.       if(y >= height) return height-1;
  299.     }
  300.   }
  301.   return y-1;
  302. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement