最近使用AnimatedGifEncoder类处理gif图片,后来需要使用它来分解gif图片,不知道怎么操作,在网上到处找代码。搞笑的是文章千篇一律,各种复制粘贴,注释都不改的,也不看代码好不好用,结果当然不好用,分解出来的图片出现变色、透明背景不透明等问题,想了想还是自己写一篇吧,代码量少的可怜,纯粹是看不惯那些无脑复制。
<dependency>
<groupId>com.madgag</groupId>
<artifactId>animated-gif-lib</artifactId>
<version>1.4</version>
</dependency>
/**
* @param originalSource 目标gif
* @param newPath 分解后的文件夹路径
*/
private static synchronized void gifSeparate(String originalSource ,String newPath) {
try{
GifDecoder gd = new GifDecoder();
int status = gd.read(new FileInputStream(new File(originalSource)));
if (status != GifDecoder.STATUS_OK) {
return;
}
for (int i = 0; i < gd.getFrameCount(); i++) {
BufferedImage frame = gd.getFrame(i);
ImageIO.write(frame,"png",new File(newPath+i+".png"));
}
}catch(Exception e){
e.printStackTrace();
}
}