你好! 大家好,我是“奇点”,世人称奇点。我刚工作几年,想和大家一起进步
一个有上进心的【Java ToB终端大厂领域博主】!
我喜欢java和python。 我平时很懒。 如果我能用程序解决它,我永远不会手动解决它。
✨ 如果有对【java】感兴趣的【可爱】请关注我
❤️❤️❤️谢谢所有的小可爱们! ❤️❤️❤️
——————————————
如果您觉得这篇文章对您有帮助,请点赞并关注我。 如有补充,欢迎评论交流。 我会尽力创作出更多更好的文章。
目录
介绍
特征
使用
实现原理
Java实现GIF图片
Maven 依赖项
编码
编辑
GIF图像是我们日常生活中使用非常广泛的图像格式。 微信、QQ聊天怎么能少了它,尤其是那些充满智慧的表情包。 如果没有GIF,就没有灵魂。 GIF表情给我们带来了无数的欢乐。哈哈,既然这么开心,今天博主就用程序来实现gif图片吧。 今天的主角是用java实现自己的GIF动画效果
介绍
GIF的全称是Graphics Interchange Format,可以翻译为图形交换格式,用于显示超文本标记语言(Hypertext Markup Language)中的索引彩色图像,广泛应用于互联网和其他在线服务系统中。 GIF 是一种公共图像文件格式标准ip形象,版权归 Compu Serve Corporation 所有。
GIF格式的名称是Graphics Interchange Format的缩写,由Compu Serve于1987年开发,旨在填补跨平台图像格式的空白。 GIF可以被PC和Maciontosh等多种平台支持。
GIF 是一种位图。 位图的一般原理是:一幅图片由许多像素组成,每个像素被分配一种颜色,这些像素组合起来形成一幅图片。 GIF 使用 Lempel-Zev-Welch (LZW) 压缩算法,最多支持 256 种颜色。 由于这个特点,GIF更适合颜色较少的图片,例如卡通形状、公司标志等。 如果遇到需要真彩色的场合,那么GIF的表现力就有限了。 GIF通常带有一个调色板自己照片生成卡通照片,里面存储了需要使用的各种颜色。 在Web应用中,图像的文件大小显然会影响下载速度,因此我们可以根据GIF带调色板的特点来优化调色板,减少图像使用的颜色数量(有些图像不使用颜色)可以丢弃),不影响图片质量。
GIF格式与其他图像格式的最大区别在于它完全是作为公共标准而设计的。 由于 Compu Serve 网络的普及,许多平台都支持 GIF 格式。 Compu Serve 通过免费分发格式手册来推广 GIF,但要求使用 GIF 文件格式的软件包含其版权信息的描述。
特征
GIF 格式的图像文件具有以下特点:
(1) GIF格式的图像文件扩展名为“.gif”;
(2) 对于灰度图像表现最好;
(3)有GIF87a和GIF89a两个版本;
(4)采用改进的LZW压缩算法处理图像数据;
(5)调色板数据分为通用调色板和局部调色板,颜色值不同;
(6) 不支持24bit颜色模式自己照片生成卡通照片,最多可存储256种颜色。 [1]
使用
①GIF是压缩格式的文件,用于减少文件在网络上传输的时间;
②GIF的位深为1-8bit,单色透明,通过最多256种颜色的调色板实现,图像尺寸最大为64K×64K像素。 GIF主要是为数据流设计的传输格式,而不是作为文件存储格式,因此是最复杂的图像文件格式;
③支持位图、灰度和索引颜色模式。 [2]
实现原理
官方解释:它是一种图像文件,可以将多个图像数据存储在一起,并逐帧显示在屏幕上,形成简单的动画。 简单来说,将多张图片放在一起,视觉上就像动画一样。
正如我们上面提到的,动画是一个多图像数据文件,它应该至少包含两个图像(如下所示)
当图像越多时,动画就会越详细(并且文件大小也会越大)。 当每秒超过24帧,即单帧时间小于0.04秒时,这些连续播放的图片就会链接成视频。
制作动态图片的方法有很多种。 对于软件来说,一般用PS来制作是比较常见和方便的。 后续博主有时间学习如何制作PS。 该方法可以将静态图片制作成动态图片,可以用PS绘制,也可以用视频文件捕捉。 拼接成动画(本地动画就是这样做的,也可以用3D文件来制作动画。今天我们用编程器来实现GIF动画的制作效果,具体实现如下
Java实现GIF图片
Maven 依赖项
好了,废话够多了,我们来用java来实现我们自己的GIF动画效果吧。
我们可以使用一个开源的GIF生成工具包来实现这一点。这里使用的是animated-gif-lib,具体项目地址如下
:///rtyley/animated-gif-lib-for-java
编辑
Maven 依赖项
com.madgag
animated-gif-lib
1.4
编码
使用这个工具包,生成GIF图像非常简单。 只需要使用AnimatedGifEncoder配置一些图片播放间隔、重复次数、图片生成路径等,就可以生成想要的GIF图片了~
项目结构如下
编辑
package cn.mystylefree.gifdemo;
import com.madgag.gif.fmsware.AnimatedGifEncoder;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* @program my-project-model
* @description:
* @author: lee
* @create: 2022/09/15 15:52
*/
public class Main {
public static void main(String[] args) throws IOException {
BufferedImage image1 = ImageIO.read(new File(Main.class.getResource("/static/snow1.png").getFile()));
BufferedImage image2 = ImageIO.read(new File(Main.class.getResource("/static/snow2.png").getFile()));
BufferedImage image3 = ImageIO.read(new File(Main.class.getResource("/static/snow3.png").getFile()));
BufferedImage image4 = ImageIO.read(new File(Main.class.getResource("/static/snow4.png").getFile()));
BufferedImage image5 = ImageIO.read(new File(Main.class.getResource("/static/snow5.png").getFile()));
AnimatedGifEncoder e = new AnimatedGifEncoder();
e.setSize(900, 1000);
//生成的图片路径
e.start(new FileOutputStream("./test_gif.gif"));
//图片之间间隔时间
e.setDelay(500);
//重复次数 0表示无限重复 默认不重复
e.setRepeat(0);
//添加图片
e.addFrame(image1);
e.addFrame(image2);
e.addFrame(image3);
e.addFrame(image4);
e.addFrame(image5);
e.finish();
}
}
上面的代码非常简单,AnimatedGifEncoder类提供了很多简单的方法:
运行上面的代码在当前目录生成图片表情包设计,用浏览器打开生成图片如下(这里由于平台限制,我设置的是图片大小):
编辑
上图如下
编辑
雪1
编辑
雪2
编辑
雪3
编辑
雪4
编辑
雪5
好了,通过上面的简单方法,我们就实现了Java生成GIF图片。 当然,这是站在前人的肩膀上才能得到的结果。 具体细节可以查看源码。
创作不易,请给博主点赞
编辑
参考:GIF(图片格式)_百度百科
- 本文固定链接: https://wen.nuanque.com/katong/6106.html
- 转载请注明: nuanquewen 于 吉祥物设计/卡通ip设计/卡通人物设计/卡通形象设计/表情包设计 发表
- 文章或作品为作者独立观点不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。本文之内容为用户主动投稿和用户分享产生,如发现内容涉嫌抄袭侵权,请联系在线客服举报,一经查实,本站将立刻删除。本站转载之内容为资源共享、学习交流之目的,请勿使用于商业用途。