java实现图片合成gif图——输出到具体路径或流数据上传
一、多图片转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图——输出到具体路径或流数据上传相关推荐
- php结合美图秀秀,美图秀秀web开放平台--PHP流式上传和表单上传示例分享_PHP
废话少说,直接上代码: 0) { $filename = $save_path . '/' . uniqid() . '.jpg'; $handle = fopen($filename, 'w+'); ...
- java 处理图片图片合成
最近写了一个java的图片合成相关的项目,真的是一踩一个坑,下面博主说说遇见的一些坑和怎么解决的这些问题. 本文主要讲图片合成,加文字还是比较简单的. 先讲下我的需求,把一张图片盖到另外一张图片上面, ...
- JAVA操作图片/合成/电子盖章等
JAVA操作图片/合成/电子盖章等 /**** @param mainFile* @param file1* @param f 透明度 最大为1* @param response* @return* ...
- 新大陆物联网-Android实现网关功能-连接云平台并上传传感器数据-获取执行器指令并执行-Android网关开发-通信-数据上传云平台-JAVA原理讲解-免费云平台使用-竞赛2022国赛真题
目录 一.任务要求 二.开发环境 三.网关上线 四.数据上传与命令下发 五.JSON命令解析思路 六.总结 一.任务要求 我们将要实现的效果是:Android开发平板与Lora板进行有线串口通信,解析 ...
- PHP流式上传和表单上传(美图秀秀)
最近需要开发一个头像上传的功能,找了很多都需要授权的,后来找到了美图秀秀,功能非常好用. <?php /*** Note:for octet-stream upload* 这个是流式上传PHP文 ...
- 亚马逊主图视频可以放几个?如何上传
随着亚马逊的知名度上升之后,在上面开店的商家数量逐渐上升,使得各个店铺之间存在很大的竞争压力.如果想要让商品吸引更多消费者的关注,做好主图视频还是挺重要的,可是并不了解亚马逊主图视频可以放几个?如何上 ...
- Java获取流形式上传下载文件
废话不多说,直接上代码: 1:pom中添加一下依赖: <!--druid数据源--><dependency><groupId>com.alibaba</gro ...
- java 使用oos 进行数据上传和跨域
java 使用oos 进行数据上传和跨域 导入依赖 <dependency><groupId>com.aliyun.oss</groupId><artifac ...
- java云控_云控 数据上传
新旧云控,新旧上传SDK的实现和区别 0]旧云控的功能控制是使用FLAG控制,云下发flags: Whetstone/app/klorobot/src/com/xxxx/klo/bugreport/u ...
最新文章
- 【VMCloud云平台】SCCM(三)初始配置
- PuTTY的下载、使用和设置,并推荐同类佳软——MobaXterm
- 闭关休养or趁火打劫:疫情之下焦点行业网络威胁分析
- 电脑公司Win11 64位全新旗舰版镜像V2021.08
- linux文件存储管理,深入探讨Linux文件系统管理小结
- 【emWin】例程一:emWin系列教程简介
- hdu3507 print article
- scrapy生成json中文为ASCII码解决
- 新概念51单片机c语言教程doc,新概念51单片机C语言教程实例代码.doc
- kindle 新手入门
- 图片存储方案介绍---七牛云存储
- 苹果移动设备(iPhone/iPad)分辨率汇总
- 解决IDEA编译(java找不到符号)问题
- Linux系统进程优先级——计算方式
- 数据库用户配额问题ORA-01536: space quota exceeded for tablespace 'TFR_DATA' #
- MyBatis-Spring(五)--MapperScannerConfigurer实现增删改查
- php九宫格图片合成,php实现微信中的图片合并-九宫格图片
- 什么是泛型中的限定通配符和非限定通配符 ?
- 基于matlab的步进电机仿真(一)
- stm32f103停止模式低功耗设置(最低5.7ua)