锘??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 GMT60- java 鍥劇墖澶勭悊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);
}
}

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