?? framepositioningexample.java
字號(hào):
import com.gif4j.light.GifEncoder;
import com.gif4j.light.GifFrame;
import com.gif4j.light.GifImage;
import com.gif4j.light.ImageUtils;
import java.awt.*;
import java.io.File;
import java.io.IOException;
/**
* This example demostrates differences between absolute and relative frames positioning
*/
public class FramePositioningExample {
public static void main(String[] args) {
// change out directory if it is necessary
File outputDir = new File("." + File.separator + "result");
if (!outputDir.exists())
outputDir.mkdirs();
try {
// first example with relative positioning and without frames covering each on other
GifImage imageWithRelativeFrames = new GifImage(300, 300);
// set indefinite looping
imageWithRelativeFrames.setLoopNumber(0);
// add 100x100 top-left frame
imageWithRelativeFrames.addGifFrame(
new GifFrame(TestUtils.genTestImage(100, 100), GifFrame.LAYOUT_TOP_LEFT));
// add 100x100 top-center frame
imageWithRelativeFrames.addGifFrame(
new GifFrame(TestUtils.genTestImage(100, 100), GifFrame.LAYOUT_TOP_CENTER));
// add 100x100 top-right frame
imageWithRelativeFrames.addGifFrame(
new GifFrame(TestUtils.genTestImage(100, 100), GifFrame.LAYOUT_TOP_RIGHT));
// add 100x100 middle-left frame
imageWithRelativeFrames.addGifFrame(
new GifFrame(TestUtils.genTestImage(100, 100), GifFrame.LAYOUT_MIDDLE_LEFT));
// add 100x100 middle-center frame
imageWithRelativeFrames.addGifFrame(
new GifFrame(TestUtils.genTestImage(100, 100), GifFrame.LAYOUT_MIDDLE_CENTER));
// add 100x100 middle-right frame
imageWithRelativeFrames.addGifFrame(
new GifFrame(TestUtils.genTestImage(100, 100), GifFrame.LAYOUT_MIDDLE_RIGHT));
// add 100x100 bottom-left frame
imageWithRelativeFrames.addGifFrame(
new GifFrame(TestUtils.genTestImage(100, 100), GifFrame.LAYOUT_BOTTOM_LEFT));
// add 100x100 bottom-center frame
imageWithRelativeFrames.addGifFrame(
new GifFrame(TestUtils.genTestImage(100, 100), GifFrame.LAYOUT_BOTTOM_CENTER));
// add 100x100 bottom-right frame
imageWithRelativeFrames.addGifFrame(
new GifFrame(TestUtils.genTestImage(100, 100), GifFrame.LAYOUT_BOTTOM_RIGHT));
GifEncoder.encode(imageWithRelativeFrames, new File(outputDir, "FramePositioningExample_relative_1.gif"), true);
// second example with relative positioning and frames covering each on other
imageWithRelativeFrames = new GifImage(200, 200);
// set indefinite looping
// add 100x100 top-left frame
imageWithRelativeFrames.addGifFrame(
new GifFrame(TestUtils.genTestImage(100, 100), GifFrame.LAYOUT_TOP_LEFT));
// add 100x100 top-center frame
imageWithRelativeFrames.addGifFrame(
new GifFrame(TestUtils.genTestImage(100, 100), GifFrame.LAYOUT_TOP_CENTER));
// add 100x100 top-right frame
imageWithRelativeFrames.addGifFrame(
new GifFrame(TestUtils.genTestImage(100, 100), GifFrame.LAYOUT_TOP_RIGHT));
// add 100x100 middle-left frame
imageWithRelativeFrames.addGifFrame(
new GifFrame(TestUtils.genTestImage(100, 100), GifFrame.LAYOUT_MIDDLE_LEFT));
// add 100x100 middle-center frame
imageWithRelativeFrames.addGifFrame(
new GifFrame(TestUtils.genTestImage(100, 100), GifFrame.LAYOUT_MIDDLE_CENTER));
// add 100x100 middle-right frame
imageWithRelativeFrames.addGifFrame(
new GifFrame(TestUtils.genTestImage(100, 100), GifFrame.LAYOUT_MIDDLE_RIGHT));
// add 100x100 bottom-left frame
imageWithRelativeFrames.addGifFrame(
new GifFrame(TestUtils.genTestImage(100, 100), GifFrame.LAYOUT_BOTTOM_LEFT));
// add 100x100 bottom-center frame
imageWithRelativeFrames.addGifFrame(
new GifFrame(TestUtils.genTestImage(100, 100), GifFrame.LAYOUT_BOTTOM_CENTER));
// add 100x100 bottom-right frame
imageWithRelativeFrames.addGifFrame(
new GifFrame(TestUtils.genTestImage(100, 100), GifFrame.LAYOUT_BOTTOM_RIGHT));
GifEncoder.encode(imageWithRelativeFrames, new File(outputDir, "FramePositioningExample_relative_2.gif"), true);
} catch (IOException e) {
} catch (InterruptedException e) {
}
// third example demostrates how relative positioning can be used to produce image tours
try {
// read images. Here we read from files but it can be any source (internet, database etc.)
Image[] images = new Image[4];
for (int i = 1; i <= 4; i++)
images[i - 1] = Toolkit.getDefaultToolkit().createImage("house_"+i+".jpg");
// scale down image to 150x120 icons
for (int i = 0; i < 4; i++)
images[i] = ImageUtils.scale(images[i], 150, 120, false);
// create frames
GifFrame[] frames = new GifFrame[4];
for (int i = 0; i < 4; i++) {
switch (i % 4) {
case 0:
frames[i] = new GifFrame(images[i], GifFrame.LAYOUT_TOP_LEFT);
break;
case 1:
frames[i] = new GifFrame(images[i], GifFrame.LAYOUT_TOP_RIGHT);
break;
case 2:
frames[i] = new GifFrame(images[i], GifFrame.LAYOUT_BOTTOM_LEFT);
break;
case 3:
frames[i] = new GifFrame(images[i], GifFrame.LAYOUT_BOTTOM_RIGHT);
break;
}
}
GifImage gifImage = new GifImage(300, 240);
// set indefinite looping
gifImage.setLoopNumber(0);
for (int i = 0; i < 4; i++)
gifImage.addGifFrame(frames[i]);
// set long delay (5 seconds = 500*1/100) for the last frame
gifImage.getLastFrame().setDelay(500);
GifEncoder.encode(gifImage, new File(outputDir, "FramePositioningExample_relative_3.gif"), true);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -