⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 framepositioningexample.java

📁 java对GIF的编解码工具,有完整的说明和例子
💻 JAVA
字号:

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();
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -