Java Gif 读写
Posted
技术标签:
【中文标题】Java Gif 读写【英文标题】:Java Gif read and write 【发布时间】:2021-10-04 12:12:50 【问题描述】:我只想读取 gif 并将其写入文件(然后我会将其与其他图像一起添加到 BufferedImage 并创建一个普通图像)。但是现在不知道为什么我的gif在读写后会变成静态的。
BufferedImage bufferedImage = ImageIO.read(new File("Uzga.gif"));
ImageIO.write(bufferedImage, "gif", new File("1.gif"));
【问题讨论】:
BufferedImage
是单个静态图像。它不支持动画图像。
【参考方案1】:
我认为你不能仅仅使用 ImageIO.write 创建一个动画礼物,你需要创建一个正确格式的礼物文件来支持动画,看看: http://openimaj.org/apidocs/org/openimaj/demos/sandbox/image/gif/GifSequenceWriter.html
GifSequencerWriter 类构造函数按此顺序将所有图像粘贴在一起的文件(输出文件)的流、图像 RGB 的类型、大文件中每个单独图像的大小块以及布尔值,如果为真,则动画循环播放。 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();
【讨论】:
哦,还有一个问题,我如何从一个 gif 中制作一组图像?以上是关于Java Gif 读写的主要内容,如果未能解决你的问题,请参考以下文章