王境则·真香.gif
、谁赞成谁反对.gif
、为所欲为.gif
…
网络上有很多搞笑的gif图片,里面的对白还是可以自定义的。
想搞这个想了很久了,最近终于把它实现了。
前言
- 光是文字没啥具体指向,先把网上的一个成品贴出来:
- 要实现这个功能,得先搞清楚大致原理,其中最主要的实际上就是对GIF这种格式的文件进行操作。
当然,在这里我们可以细分:- 从GIF里面读取每一帧的图像
- 对图像进行处理,比如缩放/拉伸、添加文字等等
- 有了若干图像帧,如何按照恒定帧率生成GIF
实现
- 这里先讲如何从GIF里面读取每一帧的图像
下面的实现是将sample.gif
中每一帧都保存下来File gif = new File("sample.gif"); ImageReader reader = (ImageReader) ImageIO.getImageReadersByFormatName("gif").next(); ImageInputStream ciis = ImageIO.createImageInputStream(new FileInputStream(gif)); reader.setInput(ciis, true); try { for (int i = 0;; i++) { BufferedImage image = reader.read(i); ImageIO.write(image, "jpg", new File(String.format("%03d.jpg", i))); } } catch (IndexOutOfBoundsException e) { } ciis.close();