当前位置: 首页 > 面试题库 >

有没有一种方法可以用Java中的多个图像创建一个Gif图像?

东方国安
2023-03-14
问题内容

我正在尝试建立一个简单的Java程序,该程序可以从其他多个图像(jpg)创建一个动画gif。谁能给我一个有关如何在Java中实现此目标的信息?我已经搜索过Google,但找不到任何真正有用的信息。

感谢你们!


问题答案:

这里有一个类的示例,该类从不同的图像创建动画的gif:

链接

编辑:链接似乎已死。 无论如何,为了清楚起见,这段代码是由Elliot Kroo完成的。

编辑2:感谢您@Marco13找到WayBackMachine链接。更新了参考!

该类提供以下方法:

class GifSequenceWriter {
    public GifSequenceWriter(
        ImageOutputStream outputStream,
        int imageType,
        int timeBetweenFramesMS,
        boolean loopContinuously);

    public void writeToSequence(RenderedImage img);

    public void close();
}

还有一个小例子:

public static void main(String[] args) throws Exception {
  if (args.length > 1) {
    // grab the output image type from the first image in the sequence
    BufferedImage firstImage = ImageIO.read(new File(args[0]));

    // create a new BufferedOutputStream with the last argument
    ImageOutputStream output = 
      new FileImageOutputStream(new File(args[args.length - 1]));

    // create a gif sequence with the type of the first image, 1 second
    // between frames, which loops continuously
    GifSequenceWriter writer = 
      new GifSequenceWriter(output, firstImage.getType(), 1, false);

    // write out the first image to our sequence...
    writer.writeToSequence(firstImage);
    for(int i=1; i<args.length-1; i++) {
      BufferedImage nextImage = ImageIO.read(new File(args[i]));
      writer.writeToSequence(nextImage);
    }

    writer.close();
    output.close();
  } else {
    System.out.println(
      "Usage: java GifSequenceWriter [list of gif files] [output file]");
  }
}

向Elliot Kroo推荐此代码。



 类似资料:
  • 我很想知道是否有一个等价物: 它生成与matplotlib图表相反的图形。

  • 问题内容: 有谁知道我可以使用node.js读取文件元数据的方法吗?对于 例如,我想读的“细节” jpeg格式的选项卡上的“注释”属性 的文件(在Windows计算机上)。 问题答案: 有许多NPM包可用于读取EXIF数据。例如:

  • 问题内容: 假设我有以下代码: 这段代码的问题在于,协程内部的循环永远不会完成第一次迭代,而大小会不断增加。 为什么会这样发生,我该怎么解决? 我无法摆脱单独的线程,因为在我的真实代码中,我使用了单独的线程与串行设备进行通信,而且我还没有找到使用的方法。 问题答案: 不是线程安全的,因此您不能直接在多个线程中直接使用它。相反,您可以使用,它是提供线程感知队列的第三方库: 还有(全披露:我写了它),

  • 问题内容: 所以,这是问题所在,我 需要做 一些 开发 ,为此,我需要以下软件包: MongoDb 节点 Nginx的 兔子Mq 雷迪斯 一种选择是, 我获取一个Ubuntu映像 , 创建一个容器 并开始一个接一个地安装它们并完成,启动我的服务器,并公开端口。 但这也可以在虚拟框中轻松完成,并且不会使用Docker的功能。因此,我必须开始使用这些软件包构建自己的映像。现在,这是一个问题,如果我开始

  • 问题内容: 我现在有几个Dockerfile。 一种是Cassandra 3.5,它是 我也有一个用于Kafka的Dockerfile,但是要复杂得多。它是,并且它运行长命令来安装Kafka和Zookeeper。 最后,我有一个用Scala编写的使用SBT的应用程序。 对于该Dockerfile,它是,这使我得到了Java 8,Scala 2.11.7和STB 0.13.9。 也许,我不了解Doc