String fName; boolean fileChosen=false; boolean showHelp=false; int size=600; int post=1; int bl=0; PFont font; PImage i,b; float th=0.4; void setup(){ size(size+size/3,size); font=loadFont("Ang24.vlw"); textFont(font,24); smooth(); frameRate(20); } void draw(){ if(!fileChosen){ chooseFile();} if(fileChosen&&showHelp){ display("I - INVERT\nG - GRAY\nE - ERODE\n D - DILATE\nP - POSTERIZE\nB - BLUR\nT - THRESHOLD\nO - OPAQUE\nR - RESTART\nS - SAVE\nX - EXIT"); }} void clearDisplay(){ fill(255); rect(0,0,width/2,height/3); } void chooseFile(){ String loadPath = selectInput("Choose a file to filter"); // Opens file chooser if (loadPath == null) { println("No file was selected..."); } else { i=loadImage(loadPath); image(i,0,0,width,height); b=get(); fileChosen=true; }} void display(String s){ clearDisplay(); fill(0); text(s,2,20); } void saveFile(){ String savePath = selectOutput("Choose name and location for filtered file"); // Opens file chooser if (savePath == null) { // If a file was not selected println("No output file was selected..."); } else { // If a file was selected, save file save(savePath); }} void doFilter(char c){ showHelp=false; image(b,0,0,width,height); switch(c){ case 'B': case 'b': bl++; if(bl>10)bl=1; filter(BLUR,bl); break; case 'I': case 'i': filter(INVERT); break; case 'd': case 'D': filter(DILATE); break; case 'e': case 'E': filter(ERODE); break; case 'p': case 'P': post+=1; filter(POSTERIZE,post); break; case 't': case 'T': th+=.1; filter(THRESHOLD,th); break; case 'o': case 'O': filter(OPAQUE); break; case 'G': case 'g': filter(GRAY); break; case 'R': case 'r': fileChosen=false; break; case 'S': case 's': saveFile(); break; case 'X': case 'x': exit(); break; default: filter(INVERT); } b=get(); } void keyPressed(){ if(fileChosen){ if(key=='h'||key=='H'){ if(showHelp){ image(b,0,0,width,height); } if(!showHelp){ b=get(); } showHelp=!showHelp; } if(key=='I'||key=='i'||key=='g'||key=='G'||key=='E'||key=='e'||key=='B'||key=='b' ||key=='D'||key=='d'||key=='P'||key=='p'||key=='T'||key=='t'||key=='O'||key=='o' ||key=='R'||key=='r'||key=='S'||key=='s'||key=='x'||key=='X'){ doFilter(key); } } }