import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; class Photo{ BufferedImage image; Photo( String filename ) throws Exception { File file = new File( filename ); image = ImageIO.read(file); } Photo( BufferedImage image ){ this.image = image; } void print( String filename ) throws Exception { File file = new File( filename ); ImageIO.write(image, "jpg", file); System.out.println( "--> New picture: " + filename ); } Photo apply( PhotoTransform tr ){ BufferedImage newImage = tr.transform(image); return new Photo( newImage ); } }