一、多图片转gif 转存到输出流

/*** 多图片转gif 转存到输出流** @param imageList* @param os* @throws IOException*/private static void imagesToGif(List<BufferedImage> imageList, OutputStream os) {// 拆分一帧一帧的压缩之后合成AnimatedGifEncoder encoder = new AnimatedGifEncoder();encoder.start(os);encoder.setRepeat(0);for (BufferedImage bufferedImage :imageList) {encoder.setDelay(1000);int height = bufferedImage.getHeight();int width = bufferedImage.getWidth();BufferedImage zoomImage = new BufferedImage(width, height, 3);Image image = bufferedImage.getScaledInstance(width, height, Image.SCALE_SMOOTH);Graphics gc = zoomImage.getGraphics();gc.setColor(Color.WHITE);gc.drawImage(image, 0, 0, null);encoder.addFrame(zoomImage);}encoder.finish();}

二、多图片转gif 转存到具体输出路径输出

/*** 多图片转gif* @param imageList* @param outputPath* @throws IOException*/public static void imagesToGif(List<BufferedImage> imageList, String outputPath) throws IOException {// 拆分一帧一帧的压缩之后合成AnimatedGifEncoder encoder = new AnimatedGifEncoder();encoder.start(outputPath);encoder.setRepeat(0);for (BufferedImage bufferedImage :imageList) {encoder.setDelay(200);int height = bufferedImage.getHeight();int width = bufferedImage.getWidth();BufferedImage zoomImage = new BufferedImage(width, height, 3);Image image = bufferedImage.getScaledInstance(width, height, Image.SCALE_SMOOTH);Graphics gc = zoomImage.getGraphics();gc.setColor(Color.WHITE);gc.drawImage(image, 0, 0, null);encoder.addFrame(zoomImage);}encoder.finish();File outFile = new File(outputPath);BufferedImage image = ImageIO.read(outFile);ImageIO.write(image, outFile.getName(), outFile);}

三、测试

 public static void main(String[] args) {try {List<BufferedImage> bufferedImages = new ArrayList<>();BufferedImage read1 = ImageIO.read(new FileInputStream("C:\\Users\\cw\\Desktop\\1.png"));BufferedImage read2 = ImageIO.read(new FileInputStream("C:\\Users\\cw\\Desktop\\2.png"));BufferedImage read3 = ImageIO.read(new FileInputStream("C:\\Users\\cw\\Desktop\\3.png"));BufferedImage read4 = ImageIO.read(new FileInputStream("C:\\Users\\cw\\Desktop\\4.png"));BufferedImage read5 = ImageIO.read(new FileInputStream("C:\\Users\\cw\\Desktop\\5.png"));bufferedImages.add(read1);bufferedImages.add(read2);bufferedImages.add(read3);bufferedImages.add(read4);bufferedImages.add(read5);
//            imagesToGif(bufferedImages,"C:\\Users\\cw\\Desktop\\test.gif");ByteArrayOutputStream outputStream = new ByteArrayOutputStream();imagesToGif(bufferedImages, outputStream);// 输出流转输入流 -> 可作为输入流上传到具体队形存储或其它位置存储// ByteArrayInputStream input = new ByteArrayInputStream(outputStream.toByteArray());FileOutputStream fps1 = new FileOutputStream("C:\\Users\\cw\\Desktop\\test1.gif", false);fps1.write(outputStream.toByteArray());fps1.close();} catch (IOException e) {e.printStackTrace();}}

参考文章:
https://blog.csdn.net/haopingping_88/article/details/126291679
https://blog.csdn.net/qq_50910495/article/details/122131659

java实现图片合成gif图——输出到具体路径或流数据上传相关推荐

  1. php结合美图秀秀,美图秀秀web开放平台--PHP流式上传和表单上传示例分享_PHP

    废话少说,直接上代码: 0) { $filename = $save_path . '/' . uniqid() . '.jpg'; $handle = fopen($filename, 'w+'); ...

  2. java 处理图片图片合成

    最近写了一个java的图片合成相关的项目,真的是一踩一个坑,下面博主说说遇见的一些坑和怎么解决的这些问题. 本文主要讲图片合成,加文字还是比较简单的. 先讲下我的需求,把一张图片盖到另外一张图片上面, ...

  3. JAVA操作图片/合成/电子盖章等

    JAVA操作图片/合成/电子盖章等 /**** @param mainFile* @param file1* @param f 透明度 最大为1* @param response* @return* ...

  4. 新大陆物联网-Android实现网关功能-连接云平台并上传传感器数据-获取执行器指令并执行-Android网关开发-通信-数据上传云平台-JAVA原理讲解-免费云平台使用-竞赛2022国赛真题

    目录 一.任务要求 二.开发环境 三.网关上线 四.数据上传与命令下发 五.JSON命令解析思路 六.总结 一.任务要求 我们将要实现的效果是:Android开发平板与Lora板进行有线串口通信,解析 ...

  5. PHP流式上传和表单上传(美图秀秀)

    最近需要开发一个头像上传的功能,找了很多都需要授权的,后来找到了美图秀秀,功能非常好用. <?php /*** Note:for octet-stream upload* 这个是流式上传PHP文 ...

  6. 亚马逊主图视频可以放几个?如何上传

    随着亚马逊的知名度上升之后,在上面开店的商家数量逐渐上升,使得各个店铺之间存在很大的竞争压力.如果想要让商品吸引更多消费者的关注,做好主图视频还是挺重要的,可是并不了解亚马逊主图视频可以放几个?如何上 ...

  7. Java获取流形式上传下载文件

    废话不多说,直接上代码: 1:pom中添加一下依赖: <!--druid数据源--><dependency><groupId>com.alibaba</gro ...

  8. java 使用oos 进行数据上传和跨域

    java 使用oos 进行数据上传和跨域 导入依赖 <dependency><groupId>com.aliyun.oss</groupId><artifac ...

  9. java云控_云控 数据上传

    新旧云控,新旧上传SDK的实现和区别 0]旧云控的功能控制是使用FLAG控制,云下发flags: Whetstone/app/klorobot/src/com/xxxx/klo/bugreport/u ...

最新文章

  1. 【VMCloud云平台】SCCM(三)初始配置
  2. PuTTY的下载、使用和设置,并推荐同类佳软——MobaXterm
  3. 闭关休养or趁火打劫:疫情之下焦点行业网络威胁分析
  4. 电脑公司Win11 64位全新旗舰版镜像V2021.08
  5. linux文件存储管理,深入探讨Linux文件系统管理小结
  6. 【emWin】例程一:emWin系列教程简介
  7. hdu3507 print article
  8. scrapy生成json中文为ASCII码解决
  9. 新概念51单片机c语言教程doc,新概念51单片机C语言教程实例代码.doc
  10. kindle 新手入门
  11. 图片存储方案介绍---七牛云存储
  12. 苹果移动设备(iPhone/iPad)分辨率汇总
  13. 解决IDEA编译(java找不到符号)问题
  14. Linux系统进程优先级——计算方式
  15. 数据库用户配额问题ORA-01536: space quota exceeded for tablespace 'TFR_DATA' #
  16. MyBatis-Spring(五)--MapperScannerConfigurer实现增删改查
  17. php九宫格图片合成,php实现微信中的图片合并-九宫格图片
  18. 什么是泛型中的限定通配符和非限定通配符 ?
  19. 基于matlab的步进电机仿真(一)
  20. stm32f103停止模式低功耗设置(最低5.7ua)

热门文章

  1. 2021年中式烹调师(初级)最新解析及中式烹调师(初级)免费试题
  2. win10无法登陆到你的账户
  3. 和Leon一起从头学Git(二)
  4. 【TensorFlow】人脸识别OpenFace、Face-recognition、Insightface和FaceNet源码运行
  5. 高中计算机高效课堂和有效教学模式论文,高效课堂论文范文
  6. 广告买量支付方式 cpa cpc cps cpt
  7. 大对象数据的访问控制 (2)
  8. 支持向量机(SVM)--小样本
  9. 阿里云视频点播大招盘点
  10. 正版软件 Windows系统、Office 软件、Microsoft 365 合集