java根据jpg格式图片或视频文件生成gif动图
1. 多张jpg图片制作GIF
<dependency>
<groupId>com.madgag</groupId>
<artifactId>animated-gif-lib</artifactId>
<version>1.4</version>
</dependency>
或者
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.0.6</version>
</dependency>
示例:
/** 方式1,已有jpg格式图片 **/ BufferedImage image1 = ImageIO.read(new File("C:\\Users\\zjy\\Desktop\\1.jpg")); BufferedImage image2 = ImageIO.read(new File("C:\\Users\\zjy\\Desktop\\2.jpg")); BufferedImage image3 = ImageIO.read(new File("C:\\Users\\zjy\\Desktop\\3.jpg")); BufferedImage image4 = ImageIO.read(new File("C:\\Users\\zjy\\Desktop\\4.jpg")); AnimatedGifEncoder e = new AnimatedGifEncoder(); // 生成的图片路径 e.start(new FileOutputStream("C:\\Users\\zjy\\Desktop\\t.gif")); // 图片宽高 e.setSize(600, 300); // 图片之间间隔时间 e.setDelay(1000); // 重复次数 0表示无限重复 默认不重复 e.setRepeat(0); // 添加图片进去 e.addFrame(image1); e.addFrame(image2); e.addFrame(image3); e.addFrame(image4); e.finish();
2.自定义制作GIF动图
示例:
/** 2方式 系统创建图片生成gif **/ AnimatedGifEncoder encoder = new AnimatedGifEncoder(); encoder.start("C:\\Users\\zjy\\Desktop\\y.gif"); encoder.setTransparent(Color.WHITE); encoder.setRepeat(0); encoder.setDelay(80);BufferedImage img = new BufferedImage(400, 360, BufferedImage.TYPE_3BYTE_BGR); Graphics2D g2d = img.createGraphics(); for (int i = 0; i < 100; i++) {g2d.setColor(Color.WHITE);g2d.fillRect(0, 0, 400, 360);g2d.setColor(Color.BLUE);g2d.drawOval(0, i, 200, 200);encoder.addFrame(img); } g2d.dispose(); encoder.finish();
3.视频文件生成GIF动图
ws.schild是基于ffmpeg的java工具包,是目前主流的对视频和音频进行转码、裁剪以及提取操作的java工具包。
pom依赖
<dependency>
<groupId>ws.schild</groupId>
<artifactId>jave-core</artifactId>
<version>3.3.1</version>
</dependency>
<!-- 根据系统二选一 -->
<!-- win系统 -->
<dependency>
<groupId>ws.schild</groupId>
<artifactId>jave-nativebin-win64</artifactId>
<version>3.3.1</version>
</dependency>
<!-- linux系统 -->
<dependency>
<groupId>ws.schild</groupId>
<artifactId>jave-nativebin-linux64</artifactId>
<version>3.3.1</version>
</dependency>
或者
<dependency>
<groupId>ws.schild</groupId>
<artifactId>jave-all-deps</artifactId>
<version>3.3.1</version>
</dependency>
示例:
public class TestMediaMakeGif {// 输出格式private static final String outputFormat = "gif";public static void main(String[] args) { batchTransform("C:\\Users\\zjy\\Desktop\\video", "C:\\Users\\zjy\\Desktop\\video"); }/*** 获得转化后的文件名** @param sourceFilePath : 源视频文件路径* @return*/public static String getNewFileName(String sourceFilePath) {File source = new File(sourceFilePath);String fileName = source.getName().substring(0, source.getName().lastIndexOf("."));return fileName + "." + outputFormat;}/*** 转化音频格式* @param sourceFilePath : 源视频文件路径* @param targetFilePath : 目标gif文件路径*/public static void transform(String sourceFilePath, String targetFilePath) {File source = new File(sourceFilePath);File target = new File(targetFilePath);try {// 获得原视频的分辨率MultimediaObject mediaObject = new MultimediaObject(source);MultimediaInfo multimediaInfo = mediaObject.getInfo();VideoInfo videoInfo = multimediaInfo.getVideo();VideoSize sourceSize = videoInfo.getSize();// 设置视频属性VideoAttributes video = new VideoAttributes();video.setCodec(outputFormat);// 设置视频帧率 正常为10 ,值越大越流畅video.setFrameRate(100);// 设置视频分辨率VideoSize targetSize = new VideoSize(sourceSize.getWidth() / 2, sourceSize.getHeight() / 2);video.setSize(targetSize);// 设置转码属性EncodingAttributes attrs = new EncodingAttributes();attrs.setVideoAttributes(video);// 音频转换格式类Encoder encoder = new Encoder();encoder.encode(mediaObject, target, attrs);System.out.println("制作完成");} catch (EncoderException e) {e.printStackTrace();}}/*** 转化视频格式 * @param sourceFolderPath : 源视频文件夹路径* @param targetFolderPath : 目标gif文件夹路径*/public static void batchTransform(String sourceFolderPath, String targetFolderPath) {File sourceFolder = new File(sourceFolderPath);if (sourceFolder.list().length != 0) {Arrays.asList(sourceFolder.list()).forEach(e -> {transform(sourceFolderPath + "\\" + e, targetFolderPath + "\\" + getNewFileName(e));});}} }
java根据jpg格式图片或视频文件生成gif动图相关推荐
- 基于python-opencv和PIL的截取视频区域生成 GIF 动图
文章目录 前言 用`opencv`读取视频 截取要生成gif的区域 播放区域视频并选择开始帧和结束帧 存储区域截图并用`PIL.Image`生成gif文件 demo源码: 实现效果: 前言 很多时 ...
- 怎么把视频转换成gif动图?4种转换方法推荐给大家
怎么把视频转换成gif动图?通过将视频转换为GIF动图,可以方便地在各种平台上共享和传播,使更多人能够轻松观看和分享.相比较视频文件,GIF动图通常具有较小的文件大小.这意味着在网络环境较差或带宽有限 ...
- Java图片或视频生成GIF动图,发送微信
目录 前言 GIF简介 代码生成 图片合成GIF 自定义GIF动图 视频生成GIF 发送微信 小结 前言 别人的博客文章中有动态显示这是怎么做到的呢?别人的微信发送的表情动态为什么是自己鬼畜视频?这些 ...
- Python爬虫,爬取百度贴吧图片和视频文件,xpath+lxml,访问被拒的原因分析
目录 百度贴吧图片和视频文件爬取程序 1.需求分析 2.url分析 3.Xpath分析 4.程序设计 5.坑点 百度贴吧图片和视频文件爬取程序 1.需求分析 进入百度贴吧,搜索周杰伦,进入周杰伦吧.我 ...
- java解析webp格式图片宽高;java解析webp图片转png格式
java解析webp格式图片宽高:java解析webp图片转png格式 package 你的包名:***.***.***.***;import java.io.FileInputStream; imp ...
- Java截取视频生成Gif动图
添加jar包依赖 <!-- 视频截图 --> <dependency><groupId>org.bytedeco</groupId><artifa ...
- html视频怎么转换成图片,如何将小视频转换成GIF动图或将GIF动图转换成视频
现在GIF动图是越来越流行了.在过去,它是我们在Web上唯一能展示动画图片的技术.这种技术非常的有用,因为,相对于Real Video Player, Windows Media等技术,都需要特殊的浏 ...
- FFmpeg进阶: 截取视频生成gif动图
文章目录 1.封装视频滤镜 2.截取视频生成gif 3.gif优化 4.示例效果 现在互联网上很多人都通过表情包来表达自己的情绪,常用的表情包很多都是视频文件的一部分.这里就介绍一下如何通过ffmpe ...
- 视频转换成gif动图的方法步骤
视频转换成gif动图的方法!不知道大家平时在工作中会不会使用到gif图片,反正小编经常使用到,因为gif动图具有更强的视觉效果,能够传递出更多有价值的信息,所以我经常将软件使用教程做成gif动图格式, ...
最新文章
- 用 C 语言开发一门编程语言 — 抽象语法树
- java封装省市区三级json格式,2016中国省市区三级联动json格式.pdf
- [Win32::Console]Perl终端版生命游戏
- html5+CSS3实现的炫酷超链接特效
- IDEA系列(十)--新建一个项目后之前的项目不显示
- 功率电感器基础讲座-第1章-2_转载自村田官网
- 肝!Shell 脚本编程最佳实践
- EMQ源码之--EMQ的启动
- SQL 学习最强刷题网站!
- 基于visual Studio2013解决C语言竞赛题之1008整除数
- FreeBSD 11.0-发布公告
- linux多个文件打包命令行,linux命令五十七之tar命令;linux多个文件压缩打包到一个压缩文件...
- php 伪造微信浏览器头信息,php使用curl伪造浏览器访问操作示例
- 使用JavaScript重定向到其他网页
- 远程监控养猪监控系统
- 数据结构 第七章 图(图的概念和存储)
- idea 数据库驱动下载失败问题解决
- 云队友丨陆奇:在未来,究竟哪种职业创造财富的机会最大?
- 谨防上当:揭露那些披着大数据外衣的假大数据课程
- 《程序分析:开胃菜》概览
热门文章
- 微信ios接入-Objc -all_load的坑
- 华硕笔记本升级固态SSD过程
- 应届生小白转行新媒体运营,3个月里我都经历了什么?
- CDMA码片序列问题
- html5火焰字体效果,CSS3文字特效属性text-shadow如何实现火焰文字的效果
- unity 回车_Unity InputField空格引起排版错误和回车换行
- python中的各种符号(欢迎补充)
- vue 移动端音乐(3) amp;amp;gt;热门歌单推荐部分(webpack-dev-conf.js做后端接口代理+scroll插件)
- 配置chrony服务,实现服务器时间自动同步
- 基于JAVA校园快递管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署