问题描述
我用java读取一个gif图片,把它再重新写一个gif图片,但是新写出来的图片就没有动画了,为什么??急用 大家帮帮忙我刚开始是这样写的,运行生成的gif图片不能看List < BufferedImage > images = new ArrayList<BufferedImage>(); try{ File file=new File("e:\awkoe.gif"); java.util.Iterator<ImageReader> imageReaders = ImageIO.getImageReadersByFormatName("gif");ImageReader imageReader = (ImageReader)imageReaders.next();imageReader.setInput(ImageIO.createImageInputStream(file));for(int i = 0;true;++i){try{BufferedImage aa=imageReader.read(i);images.add(aa);}catch (Exception e) {break;}}BufferedImage[] bufimages= images.toArray(new BufferedImage[images.size()]);Iterator<ImageWriter> imageWriters = ImageIO.getImageWritersByFormatName("gif");ImageWriter imageWriter = (ImageWriter)imageWriters.next();File outfile=new File("d:\aa.gif");outfile.delete();imageWriter.setOutput(ImageIO.createImageOutputStream(outfile));if(imageWriter.canWriteSequence()){imageWriter.prepareWriteSequence(null);for(int i = 0;i < bufimages.length;++i){imageWriter.writeToSequence(new IIOImage(bufimages[i],null,null),null);}imageWriter.endWriteSequence();}else{for(int i = 0;i < bufimages.length;++i){imageWriter.write(bufimages[i]);}} }catch (Exception e) { e.printStackTrace(); } 现在用这个方法,生成的gif可以看,但是他不是动画try {File file=new File("d:\aa.gif");Image image=ImageIO.read(new File("e:\awkoe.gif"));GifEncoder encoder = new GifEncoder(image,new FileOutputStream(file)); encoder.encode(); } catch (Exception e) {}请大家帮忙 谢谢问题补充:我要的不是在本机移动, 我需要在一个jsp页面上有个 <img src='/image'>标签,他提交到一个servlet, 在servlet中读取本地的一个gif图片,把它返回到jsp页面。 这样怎么弄?问题补充:谢谢 stephen830帮忙写点代码吧 过着说一下思路 急用 谢谢
解决方案
如果是仅仅要做的把图片提交到服务器端然后回显出来,那么不需要使用图片处理类,只要以2进制文件流的方式操作处理就可以了。
解决方案二:
gif格式支持动画格式,由1张或者多张图片通过一定的格式组合在一起,并设置每张图片的显示周期。你的问题应该是重新生成gif的时候没有设置gif中每一帧图片显示的间隔时间。具体的资料可以在google上搜索下。