All pastes #1021968 Raw Edit

AnimatedGifEncoder

public java v1 · immutable
#1021968 ·published 2008-05-18 16:30 UTC
rendered paste body
package 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;  }}