rendered paste bodypackage sprayletters;import java.awt.Color;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.File;import sprayletters.lib.AnimatedGifEncoder;public class GifTest{ public static void main(String[] args) { File folder = new File("output"); if (!checkOutputDirectory(folder)) { return; } pingPong(folder); colorPingPong(folder); colorChange(folder); line(folder); } static void pingPong(File folder) { String file = folder.getAbsolutePath() + "/pingpong.gif"; AnimatedGifEncoder encoder = new AnimatedGifEncoder(); encoder.start(file); // set output file encoder.setRepeat(0); // repeat 0 = infinite loop encoder.setDelay(500); // 500 milliseconds BufferedImage im = new BufferedImage(50, 50, BufferedImage.TYPE_BYTE_INDEXED); Graphics2D g = im.createGraphics(); g.fillOval(15, 22, 5, 5); // x (left top corner), y (left top corner), width, height encoder.addFrame(im); encoder.setDelay(500); im = new BufferedImage(50, 50, BufferedImage.TYPE_BYTE_INDEXED); g = im.createGraphics(); g.fillOval(30, 22, 5, 5); encoder.addFrame(im); encoder.finish(); // write file } static void colorPingPong(File folder) { String file = folder.getAbsolutePath() + "/colorpingpong.gif"; AnimatedGifEncoder encoder = new AnimatedGifEncoder(); encoder.start(file); // set output file encoder.setRepeat(0); // repeat 0 = infinite loop encoder.setDelay(500); // 500 milliseconds BufferedImage im = new BufferedImage(50, 50, BufferedImage.TYPE_BYTE_INDEXED); Graphics2D g = im.createGraphics(); g.setBackground(Color.red); g.clearRect(0, 0, 50, 50); g.setColor(Color.yellow); g.fillOval(15, 22, 8, 8); // x, y, width, height encoder.addFrame(im); encoder.setDelay(500); im = new BufferedImage(50, 50, BufferedImage.TYPE_BYTE_INDEXED); g = im.createGraphics(); g.setBackground(Color.red); g.clearRect(0, 0, 50, 50); g.setColor(Color.yellow); g.fillOval(30, 22, 8, 8); encoder.addFrame(im); encoder.finish(); // write file } static void colorChange(File folder) { String file = folder.getAbsolutePath() + "/colorchange.gif"; AnimatedGifEncoder encoder = new AnimatedGifEncoder(); encoder.start(file); // set output file encoder.setRepeat(0); // repeat 0 = infinite loop encoder.setDelay(500); // 500 milliseconds BufferedImage im = new BufferedImage(50, 50, BufferedImage.TYPE_BYTE_INDEXED); Graphics2D g = im.createGraphics(); g.setBackground(Color.white); g.clearRect(0, 0, 50, 50); g.setColor(Color.red); g.fillOval(0, 0, 50, 50); encoder.addFrame(im); encoder.setDelay(500); // 500 milliseconds im = new BufferedImage(50, 50, BufferedImage.TYPE_BYTE_INDEXED); g = im.createGraphics(); g.setBackground(Color.white); g.clearRect(0, 0, 50, 50); g.setColor(Color.pink); g.fillOval(0, 0, 50, 50); encoder.addFrame(im); encoder.finish(); // write file } static void line(File folder) { String file = folder.getAbsolutePath() + "/line.gif"; AnimatedGifEncoder encoder = new AnimatedGifEncoder(); encoder.start(file); // set output file encoder.setRepeat(0); // repeat 0 = infinite loop encoder.setDelay(500); // delay in milliseconds final Color backgroundColor = Color.lightGray; final Color foregroundColor = Color.blue; final int imageWidth = 100; final int imageHeight = 100; final int dotWidth = 5; final int dotHeight = 5; BufferedImage im; Graphics2D g; im = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_BYTE_INDEXED); g = im.createGraphics(); g.setBackground(backgroundColor); g.clearRect(0, 0, imageWidth, imageHeight); g.setColor(foregroundColor); g.fillOval(5, 5, dotWidth, dotHeight); encoder.addFrame(im); im = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_BYTE_INDEXED); g = im.createGraphics(); g.setBackground(backgroundColor); g.clearRect(0, 0, imageWidth, imageHeight); g.setColor(foregroundColor); g.fillOval(5, 5, dotWidth, dotHeight); g.fillOval(10, 10, dotWidth, dotHeight); encoder.addFrame(im); im = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_BYTE_INDEXED); g = im.createGraphics(); g.setBackground(backgroundColor); g.clearRect(0, 0, imageWidth, imageHeight); g.setColor(foregroundColor); g.fillOval(5, 5, dotWidth, dotHeight); g.fillOval(10, 10, dotWidth, dotHeight); g.fillOval(15, 15, dotWidth, dotHeight); encoder.addFrame(im); im = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_BYTE_INDEXED); g = im.createGraphics(); g.setBackground(backgroundColor); g.clearRect(0, 0, imageWidth, imageHeight); g.setColor(foregroundColor); g.fillOval(5, 5, dotWidth, dotHeight); g.fillOval(10, 10, dotWidth, dotHeight); g.fillOval(15, 15, dotWidth, dotHeight); g.fillOval(20, 20, dotWidth, dotHeight); encoder.addFrame(im); im = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_BYTE_INDEXED); g = im.createGraphics(); g.setBackground(backgroundColor); g.clearRect(0, 0, imageWidth, imageHeight); g.setColor(foregroundColor); g.fillOval(5, 5, dotWidth, dotHeight); g.fillOval(10, 10, dotWidth, dotHeight); g.fillOval(15, 15, dotWidth, dotHeight); g.fillOval(20, 20, dotWidth, dotHeight); g.fillOval(25, 25, dotWidth, dotHeight); encoder.addFrame(im); encoder.finish(); // write file } static boolean checkOutputDirectory(File folder) { System.out.println("output directory: " + folder.getAbsoluteFile()); if (!folder.exists()) { System.out.println("does not exist ... trying to create"); if (!folder.mkdirs()) { System.out.println("creation failed ... aborting"); return false; } } if (!folder.isDirectory()) { System.out.println("is not a directory ... aborting"); return false; } return true; }}