如何用JAVA 将GIF动画图缩小比例而不失去动画效果?
请高手指教

解决方案 »

  1.   

    public static void main(String[] args) throws Exception{ File file = new File("c:/abc.gif"); //读入文件
    Image src = ImageIO.read(file); //构造Image对象
    int width=45;                  // 压缩后的宽
    int height = 45;                // 压缩后的高
    BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
    image.getGraphics().drawImage(src,0,0,width,height,null); //绘制缩小后的图
    FileOutputStream out=new FileOutputStream(new File("c:/out.gif")); //输出到文件流
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); 
    encoder.encode(image); 
    out.close();
    }
      

  2.   

    * 分解GIF:
      *    GifDecoder d = new GifDecoder();
      *    d.read("sample.gif");
      *    int n = d.getFrameCount();
      *    for (int i = 0; i < n; i++) {
      *       BufferedImage frame = d.getFrame(i);  // frame i
      *       int t = d.getDelay(i);  // display duration of frame in milliseconds
      *       // do something with frame
      *    }
    缩小图片,然后在合成
      * 合成GIF:
      *    AnimatedGifEncoder e = new AnimatedGifEncoder();
      *    e.start(outputFileName);
      *    e.setDelay(1000);   // 1 frame per sec
      *    e.addFrame(image1);
      *    e.addFrame(image2);
      *    e.finish();