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动图相关推荐

  1. 基于python-opencv和PIL的截取视频区域生成 GIF 动图

    文章目录 前言 用`opencv`读取视频 截取要生成gif的区域 播放区域视频并选择开始帧和结束帧 存储区域截图并用`PIL.Image`生成gif文件 demo源码: 实现效果: 前言 ​ 很多时 ...

  2. 怎么把视频转换成gif动图?4种转换方法推荐给大家

    怎么把视频转换成gif动图?通过将视频转换为GIF动图,可以方便地在各种平台上共享和传播,使更多人能够轻松观看和分享.相比较视频文件,GIF动图通常具有较小的文件大小.这意味着在网络环境较差或带宽有限 ...

  3. Java图片或视频生成GIF动图,发送微信

    目录 前言 GIF简介 代码生成 图片合成GIF 自定义GIF动图 视频生成GIF 发送微信 小结 前言 别人的博客文章中有动态显示这是怎么做到的呢?别人的微信发送的表情动态为什么是自己鬼畜视频?这些 ...

  4. Python爬虫,爬取百度贴吧图片和视频文件,xpath+lxml,访问被拒的原因分析

    目录 百度贴吧图片和视频文件爬取程序 1.需求分析 2.url分析 3.Xpath分析 4.程序设计 5.坑点 百度贴吧图片和视频文件爬取程序 1.需求分析 进入百度贴吧,搜索周杰伦,进入周杰伦吧.我 ...

  5. java解析webp格式图片宽高;java解析webp图片转png格式

    java解析webp格式图片宽高:java解析webp图片转png格式 package 你的包名:***.***.***.***;import java.io.FileInputStream; imp ...

  6. Java截取视频生成Gif动图

    添加jar包依赖 <!-- 视频截图 --> <dependency><groupId>org.bytedeco</groupId><artifa ...

  7. html视频怎么转换成图片,如何将小视频转换成GIF动图或将GIF动图转换成视频

    现在GIF动图是越来越流行了.在过去,它是我们在Web上唯一能展示动画图片的技术.这种技术非常的有用,因为,相对于Real Video Player, Windows Media等技术,都需要特殊的浏 ...

  8. FFmpeg进阶: 截取视频生成gif动图

    文章目录 1.封装视频滤镜 2.截取视频生成gif 3.gif优化 4.示例效果 现在互联网上很多人都通过表情包来表达自己的情绪,常用的表情包很多都是视频文件的一部分.这里就介绍一下如何通过ffmpe ...

  9. 视频转换成gif动图的方法步骤

    视频转换成gif动图的方法!不知道大家平时在工作中会不会使用到gif图片,反正小编经常使用到,因为gif动图具有更强的视觉效果,能够传递出更多有价值的信息,所以我经常将软件使用教程做成gif动图格式, ...

最新文章

  1. 用 C 语言开发一门编程语言 — 抽象语法树
  2. java封装省市区三级json格式,2016中国省市区三级联动json格式.pdf
  3. [Win32::Console]Perl终端版生命游戏
  4. html5+CSS3实现的炫酷超链接特效
  5. IDEA系列(十)--新建一个项目后之前的项目不显示
  6. 功率电感器基础讲座-第1章-2_转载自村田官网
  7. 肝!Shell 脚本编程最佳实践
  8. EMQ源码之--EMQ的启动
  9. SQL 学习最强刷题网站!
  10. 基于visual Studio2013解决C语言竞赛题之1008整除数
  11. FreeBSD 11.0-发布公告
  12. linux多个文件打包命令行,linux命令五十七之tar命令;linux多个文件压缩打包到一个压缩文件...
  13. php 伪造微信浏览器头信息,php使用curl伪造浏览器访问操作示例
  14. 使用JavaScript重定向到其他网页
  15. 远程监控养猪监控系统
  16. 数据结构 第七章 图(图的概念和存储)
  17. idea 数据库驱动下载失败问题解决
  18. 云队友丨陆奇:在未来,究竟哪种职业创造财富的机会最大?
  19. 谨防上当:揭露那些披着大数据外衣的假大数据课程
  20. 《程序分析:开胃菜》概览

热门文章

  1. 微信ios接入-Objc -all_load的坑
  2. 华硕笔记本升级固态SSD过程
  3. 应届生小白转行新媒体运营,3个月里我都经历了什么?
  4. CDMA码片序列问题
  5. html5火焰字体效果,CSS3文字特效属性text-shadow如何实现火焰文字的效果
  6. unity 回车_Unity InputField空格引起排版错误和回车换行
  7. python中的各种符号(欢迎补充)
  8. vue 移动端音乐(3) amp;amp;gt;热门歌单推荐部分(webpack-dev-conf.js做后端接口代理+scroll插件)
  9. 配置chrony服务,实现服务器时间自动同步
  10. 基于JAVA校园快递管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署