NiceLeeのBlog 用爱发电 bilibili~

Java 真香!如何给Gif添加对白(三)

2020-06-15
nIceLee

阅读:


如何将多帧图像按照恒定帧率生成GIF。

前言

  • 光是文字没啥具体指向,先把网上的一个成品贴出来:
  • 要实现这个功能,得先搞清楚大致原理,其中最主要的实际上就是对GIF这种格式的文件进行操作。
    当然,在这里我们可以细分:
    • 从GIF里面读取每一帧的图像
    • 对图像进行处理,比如缩放/拉伸、添加文字等等
    • 有了若干图像帧,如何按照恒定帧率生成GIF

实现

  • 这里讲如何将多帧图像按照恒定帧率生成GIF
    • 在生成GIF前有必要了解一下其具体格式,大致有印象即可,可以深入但没必要
      GIF图形文件格式文档
    • 网上有很多轮子,参考了这篇Android 开发之 MP4 文件转 GIF 文件详解
      将Android实现改为了JVM实现

        /**
         * 将静态图片列表以恒定帧率的方式合成gif
         * 
         * @param imgs      图片列表
         * @param gif       gif保存路径
         * @param frameRate 帧率
         */
        public static void merge(List<BufferedImage> imgs, String gif, int frameRate) {
            GIFEncoder encoder = new GIFEncoder();
            encoder.init(imgs.get(0));
            encoder.setFrameRate(frameRate);
            encoder.start(gif);
            for (int i = 1; i < imgs.size(); i++) {
                encoder.addFrame(imgs.get(i));
            }
            encoder.finish();
        }
      

源码

https://github.com/ButterAndButterfly/Q-Gif


内容
隐藏