• 致敬Gif之父,使用Java生成Gif图片


    点击关注强哥,查看更多精彩文章呀

    哈喽,大家好,我是强哥。

    据美国媒体报道,美国计算机科学家、GIF图像格式发明人斯蒂芬•威尔海特(Stephen Wilhite)于当地时间3月14日因新冠肺炎去世,享年74岁。1987年,他创建了图形交换格式(GIF)来压缩图像;2012年,GIF被牛津美国词典评为年度词语;2013年,斯蒂芬凭借发明GIF获得韦比终身成就奖。

    首先,为GIF之父的离世表示惋惜。

    GIF图片是我们日常生活中使用非常广泛的图片格式,尤其是那些充斥着智慧的表情包,如果没有GIF,就没有了灵魂。

    今天强哥在这里,就来教大家使用Java生成GIF格式的图片,致敬伟人。

    动手

    这里,我们不对GIF的原来做过多的解释,直接实操。

    导包

    我们可以使用一个开源GIF生成工具包来实现。这里用的是animated-gif-lib,具体项目地址如下:

    https://github.com/rtyley/animated-gif-lib-for-java

    项目中导入Maven包:

    <dependency>
      <groupId>com.madgag</groupId>
      <artifactId>animated-gif-lib</artifactId>
      <version>1.4</version>
    </dependency>
    
    

    代码开发

    有了工具包,生成GIF图片就非常简单了。只需要用到AnimatedGifEncoder配置一些图片的播放间隔、重复次数、图片生成路径等内容就可以生成想要的GIF图片啦~

    具体代码如下:

    import com.madgag.gif.fmsware.AnimatedGifEncoder;
    
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.FileOutputStream;
    import javax.imageio.ImageIO;
    
    public class GifDemo {
    
      public static void main(String[] args) throws Exception {
        BufferedImage image1 = ImageIO.read(new File(GifDemo.class.getResource("/static/1.jpeg").getFile()));
        BufferedImage image2 = ImageIO.read(new File(GifDemo.class.getResource("/static/2.jpeg").getFile()));
        BufferedImage image3 = ImageIO.read(new File(GifDemo.class.getResource("/static/3.jpeg").getFile()));
        AnimatedGifEncoder e = new AnimatedGifEncoder();
        // 设置生成图片大小
        e.setSize(900, 1000);
        //生成的图片路径
        e.start(new FileOutputStream("./testgif.gif"));
        //图片之间间隔时间
        e.setDelay(500); 
        //重复次数 0表示无限重复 默认不重复
        e.setRepeat(0);
        //添加图片
        e.addFrame(image1);
        e.addFrame(image2);
        e.addFrame(image3);
        e.finish();
      }
    
    }
    
    

    上面的代码很简单,AnimatedGifEncoder类中提供了很多简单的方法:

    • setSize设置生成图片大小
    • start设置生成的图片路径,打开输出流
    • setDelay图片之间间隔时间
    • setRepeat重复次数 0表示无限重复 默认不重复

    跑起来看看

    这里我们在classpath下准备了三张图:

    运行上面的代码,将图片生成在当前目录下,用浏览器打开生成图片效果如下(这里由于平台限制,所以我设置了图片大小):

    哈哈,漂亮吧,轻轻松松就用Java生成了GIF图片。这样的话,嘿嘿,以后如果有好看的图片,如果嫌弃图片张数太多不好整理,直接用代码将他们搞到一张GIF里是不是就可以了。我真是精打细算的小九九啊。

    强哥有话说

    好啦,通过上面简单的方式,我们便实现了Java生成GIF图片,当然,这是站在前人的肩膀上才能有的结果。至于具体的细节,比较懒又直接要代码的小伙伴,可以关注公众号「强哥叨逼叨」后台回复「GIF」获取项目具体代码哦。

    点击关注强哥,查看更多精彩文章呀

  • 相关阅读:
    STM32启动BOOT0 BOOT1设置方法
    端口映射
    端口映射
    静态路由配置
    静态路由配置
    NETGEAR路由器登录不上 重新获取ip
    NETGEAR路由器登录不上 重新获取ip
    GSM AT指令 SIM900A TC35
    GSM AT指令 SIM900A TC35
    TTP223 触摸按键
  • 原文地址:https://www.cnblogs.com/breakingdawn/p/16068803.html
Copyright © 2020-2023  润新知