问题描述
我只想读取 gif 并将其写入文件(然后我会将它与另一张图像一起添加到 BufferedImage 并创建一个普通图像)。但是现在不知道为什么我的gif在读写之后就变成静态了。
BufferedImage bufferedImage = ImageIO.read(new File("Uzga.gif"));
ImageIO.write(bufferedImage,"gif",new File("1.gif"));
解决方法
我认为您不能仅使用 ImageIO.write 创建动画礼物,您需要创建具有正确格式的礼物文件以支持动画,请查看: http://openimaj.org/apidocs/org/openimaj/demos/sandbox/image/gif/GifSequenceWriter.html
GifSequencerWriter 类构造函数按此顺序将所有图像粘在一起的文件流(输出文件)、图像 RGB 类型、大文件中每个单独图像的大小块以及一个boolean 如果为 true,则动画循环播放。 BufferedImage img 可以与您定义的相同。大文件将是所有单独的图像或相框,按顺序播放时会产生动画效果。
一些示例代码:
System.out.println("Writing to file.");
ImageOutputStream stream = null;
BufferedImage img = BufferedImage bufferedImage = ImageIO.read(new File("Uzga.gif"));;
try {
stream = new FileImageOutputStream(outFile);
GifSequenceWriter writer = new GifSequenceWriter(stream,BufferedImage.TYPE_INT_RGB,BLOCK_SIZE,true);
for (BufferedImage img: imgs)
{
writer.writeToSequence(img);
}
writer.close();
} catch (IOException e) {
e.printStackTrace();
}