import java.util.*; import java.net.*; import java.io.*; import javax.swing.*; public class PhotoFun { public static void main( String[] args ) throws IOException { Scanner stdin = new Scanner( System.in ); System.out.print( "Image source: " ); String s = stdin.nextLine(); ImageIcon original; if ( s.indexOf( "http://" ) == 0 ) { URL u = new URL( s ); original = new ImageIcon( u ); } else { original = new ImageIcon( s ); } Imager.window( original ); int[][] grid = Imager.getPixels( original ); while( true ) { System.out.print( "Command: " ); String cmd = stdin.next(); if ( cmd.equals( "blend" ) ) { String t = stdin.next(); ImageIcon otherOriginal; if ( t.indexOf( "http://" ) == 0 ) { URL u = new URL( t ); otherOriginal = new ImageIcon( u ); } else { otherOriginal = new ImageIcon( t ); } Imager.window( otherOriginal ); int[][] otherGrid = Imager.getPixels( otherOriginal ); ImageIcon version = new ImageIcon( original.getImage() ); int[][] blend = PhotoManip.blend( grid, otherGrid ); Imager.setPixels( version, blend ); Imager.window( version ); } else if ( cmd.equals( "gray" ) ) { ImageIcon version = new ImageIcon( original.getImage() ); int[][] gray = PhotoManip.grayscale( grid ); Imager.setPixels( version, gray ); Imager.window( version ); } else if ( cmd.equals( "mirror" ) ) { ImageIcon version = new ImageIcon( original.getImage() ); int[][] dirg = PhotoManip.mirror( grid ); Imager.setPixels( version, dirg ); Imager.window( version ); } else if ( cmd.equals( "scale" ) ) { double factor = stdin.nextDouble(); ImageIcon version = new ImageIcon( original.getImage() ); int[][] scale = PhotoManip.scale( grid, factor ); Imager.setPixels( version, scale ); Imager.window( version ); } else if ( cmd.equals( "soften" ) ) { double factor = stdin.nextInt(); ImageIcon version = new ImageIcon( original.getImage() ); int[][] blur = PhotoManip.scale( grid, factor ); Imager.setPixels( version, blur ); Imager.window( version ); } else if ( cmd.equals( "flip" ) ) { ImageIcon version = new ImageIcon( original.getImage() ); int[][] flip = PhotoManip.flip( grid ); Imager.setPixels( version, flip ); Imager.window( version ); } else { break; } } } }