锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品aa,久中文字幕一区,国产欧美日韩精品专区http://www.aygfsteel.com/anlyhz/zh-cnFri, 20 Jun 2025 00:24:35 GMTFri, 20 Jun 2025 00:24:35 GMT60java 鍥劇墖澶勭悊http://www.aygfsteel.com/anlyhz/archive/2008/02/21/181048.htmlanlyanlyThu, 21 Feb 2008 06:02:00 GMThttp://www.aygfsteel.com/anlyhz/archive/2008/02/21/181048.htmlhttp://www.aygfsteel.com/anlyhz/comments/181048.htmlhttp://www.aygfsteel.com/anlyhz/archive/2008/02/21/181048.html#Feedback0http://www.aygfsteel.com/anlyhz/comments/commentRss/181048.htmlhttp://www.aygfsteel.com/anlyhz/services/trackbacks/181048.html//http://www.fmsware.com/stuff/gif.zip
//鍏堜笅紼嬪簭涓渶瑕佺敤鍒扮殑鍖?br />
//class GifDD

import image.AnimatedGifEncoder;
import image.GifDecoder;

import java.awt.image.BufferedImage;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.imageio.ImageIO;

public class GifDD {

    public static String[] delay; // 寤惰繜鏃墮棿

    public Map<String, String> map = new HashMap<String, String>();

    /**
     * 鎶奼if鍥劇墖鎸夊撫鎷嗗垎鎴恓pg鍥劇墖
     *
     * @param gifName
     *            String 鍘熷浘璺緞
     *
     * @return BufferedImage[] 榪斿洖鐢熸垚鐨勬枃浠舵祦
     */

    private BufferedImage[] splitGif(String gifName) {

        try {

            GifDecoder decoder = new GifDecoder();

            decoder.read(gifName);

            // decoder.read(BufferedInputStream);

            // decoder.read(InputStream);

            int n = decoder.getFrameCount(); // 寰楀埌frame鐨勪釜鏁?br />
            BufferedImage[] subPic = new BufferedImage[n]; //

            delay = new String[n]; // 瀛樺偍寤惰繜鏃墮棿

            for (int i = 0; i < n; i++) {

                BufferedImage frame = decoder.getFrame(i); // 寰楀埌甯?br />
                delay[i] = decoder.getDelay(i) + ""; // 寰楀埌寤惰繜鏃墮棿

                // 鐢熸垚灝忕殑JPG鏂囦歡
                subPic[i] = frame;

            }
            return subPic;
        } catch (Exception e) {
            System.out.println("splitGif Failed!");
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 鎶婂寮爅pg鍥劇墖鍚堟垚涓寮?br />      *
     * @param bi
     *            BufferedImage[] 澶氫釜鏂囦歡嫻佹枃浠跺悕
     * @param newPic
     *            String 鐢熸垚鐨刧if鏂囦歡鍚?鍖呭惈璺緞
     * @param _delay
     *            String[] 鎾斁鐨勬椂闂?br />      */

    private void jpgToGif(BufferedImage bi[], String newPic, String _delay[]) {
        try {

            AnimatedGifEncoder e = new AnimatedGifEncoder(); // 緗戜笂鍙互鎵懼埌姝ょ被

            e.setRepeat(0);

            e.start(newPic);

            for (int i = 0; i < bi.length; i++) {

                // src[i] = ImageIO.read(new File(pic[i])); // 璇誨叆闇瑕佹挱鏀劇殑jpg鏂囦歡

                // e.addFrame(src[i]); // 娣誨姞鍒板撫涓?br />
                e.setDelay(new Integer(_delay[i]));// 璁劇疆鎾斁鐨勫歡榪熸椂闂?br />
                e.addFrame(bi[i]);// 娣誨姞鍒板撫涓?br />
            }
            e.finish();
        } catch (Exception e) {
            System.out.println("jpgToGif Failed:");
            e.printStackTrace();
        }
    }

    // 澶勭悊鍥劇墖

    /**
     * 鎶婂寮爅pg鍥劇墖榪涜澶勭悊
     *
     * @param bi
     *            BufferedImage[] 澶氫釜鏂囦歡嫻佹枃浠跺悕
     * @param width
     *            String 緙╂斁鐨勫搴?br />      * @param height
     *            String 緙╂斁鐨勯珮搴?br />      * @return BufferedImage[] 榪斿洖鐢熸垚鐨勬枃浠舵祦
     */

    public BufferedImage[] changeImage(BufferedImage[] bi, double width,
            double height) {

        BufferedImage src = null;

        // 瀛榳idth , height

        int saveWidth = 0;

        int saveHeight = 0;

        BufferedImage[] backBi = new BufferedImage[bi.length];

        for (int i = 0; i < bi.length; i++) {

            double __width = new Double(bi[i].getWidth() + ""); // src width

            double __height = new Double(bi[i].getHeight() + ""); // src
            // height

            if (bi[i].getHeight() <= width && bi[i].getWidth() <= height) {

                saveWidth = new Double(width).intValue();

                saveHeight = new Double(height).intValue();

            }

            else if ((width / height) >= (__width / __height)) {

                saveWidth = new Double(__width / __height * height).intValue();

                saveHeight = new Double(height).intValue();

            } else {

                saveHeight = new Double((__height / __width) * width)
                        .intValue();

                saveWidth = new Double(width).intValue();

            }

            BufferedImage tag = new BufferedImage(saveWidth, saveHeight,
                    BufferedImage.TYPE_INT_RGB);

            // 緇樺埗緙╁皬鍚庣殑鍥?br />
            tag.getGraphics().drawImage(bi[i], 0, 0, saveWidth, saveHeight,
                    null); //

            backBi[i] = tag;

        }

        // 緇樺埗緙╁皬鍚庣殑鍥?br />
        return backBi;

    }

    /**
     * 鎶婂寮爅pg鍥劇墖榪涜瀛樼洏
     *
     * @param bi
     *            BufferedImage[] 澶氫釜鏂囦歡嫻佹枃浠跺悕
     * @param savePath
     *            String 瀛樻斁鐨勮礬寰?br />      *
     */
    public void saveImage(BufferedImage[] bi, String savePath) {

        FileOutputStream out = null;

        for (int i = 0; i < bi.length; i++) {

            String path = savePath + "\\" + i + ".jpg";

            try {

                out = new FileOutputStream(path);

                ImageIO.write(bi[i], "jpeg", out);// 瀛樼洏

                // JPEGImageEncoder encoder =
                // JPEGCodec.createJPEGEncoder(savePath);
                //
                // encoder.encode(bi[i]);

                out.flush();

                out.close();

            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }

    }

    public static void main(String[] args) {

        BufferedImage[] bi = new GifDD().splitGif("e:\\a.gif");

        new GifDD().saveImage(bi, "e:\\");

        BufferedImage[] backbi = new GifDD().changeImage(bi, 32, 32);

        new GifDD().saveImage(backbi, "e:\\images");

        new GifDD().jpgToGif(backbi, "e:\\_a.gif", delay);

    }
}



anly 2008-02-21 14:02 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 息烽县| 昆山市| 得荣县| 达拉特旗| 来凤县| 自治县| 新余市| 滦南县| 浠水县| 家居| 桦甸市| 鹰潭市| 清水县| 台湾省| 尖扎县| 文安县| 石景山区| 内黄县| 泰兴市| 喀喇沁旗| 平顺县| 威宁| 秭归县| 福清市| 贺兰县| 德钦县| 潞西市| 图木舒克市| 开江县| 资兴市| 伊通| 怀集县| 额尔古纳市| 辽宁省| 南雄市| 新闻| 湖北省| 潮安县| 墨竹工卡县| 梁山县| 瓮安县|