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

这篇具有很好参考价值的文章主要介绍了Java图片或视频生成GIF动图,发送微信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

别人的博客文章中有动态显示这是怎么做到的呢?别人的微信发送的表情动态为什么是自己鬼畜视频?这些都是别人做到的,本文就是让自己也可以做到以上的事情,制作鬼畜GIF动态,辣就学起来吧!

java 发送微信表情,与程序二三事,ffmpeg,java,开发语言

GIF简介

GIF的发明者是美国计算机科学家、GIF图像格式发明人斯蒂芬•威尔海特(Stephen Wilhite)。

GIF图形交换格式是一种位图图形文件格式,以8位色(即256种颜色)重现真彩色的图像。它实际上是一种压缩文档,采用LZW压缩算法进行编码,有效地减少了图像文件在网络上传输的时间。它是目前广泛应用于网络传输的图像格式之一。

代码生成

以下介绍几种生成方式。

图片合成GIF

如何根据给定的多张图片来合成一张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>

代码:

  public static void main(String[] args) throws Exception {
        BufferedImage image1 = ImageIO.read(new File("D:/gif/11.png"));
        BufferedImage image2 = ImageIO.read(new File("D:/gif/22.jpg"));
        BufferedImage image3 = ImageIO.read(new File("D:/gif/33.jpg"));
        BufferedImage image4 = ImageIO.read(new File("D:/gif/44.jpg"));
        AnimatedGifEncoder e = new AnimatedGifEncoder();
        //生成的图片路径
        e.start(new FileOutputStream("D:/gif.gif"));
        //图片宽高
        e.setSize(300, 190);
        //图片之间间隔时间
        e.setDelay(400);
        //重复次数 0表示无限重复 默认不重复
        e.setRepeat(0);
        //添加图片
        e.addFrame(image1);
        e.addFrame(image2);
        e.addFrame(image3);
        e.addFrame(image4);
        e.finish();
    }

效果如下:
java 发送微信表情,与程序二三事,ffmpeg,java,开发语言

自定义GIF动图

自定义生成,直接使用系统创建的方式来生成gif,不使用外部的图片、视频等资源,直接在界面上绘制一个GIF图。
代码:

 public static void main(String[] args) throws IOException {
        AnimatedGifEncoder encoder = new AnimatedGifEncoder();
        encoder.start("D:/gif.gif");
        encoder.setTransparent(Color.WHITE);
        encoder.setRepeat(0);
        encoder.setDelay(50);

        BufferedImage img = new BufferedImage(200, 180, BufferedImage.TYPE_3BYTE_BGR);
        Graphics2D g2d = img.createGraphics();

        for (int i = 0; i < 100; i++) {
            g2d.setColor(Color.WHITE);
            g2d.fillRect(0, 0, 200, 180);
            g2d.setColor(Color.BLUE);
            g2d.drawOval(0, i, 120, 120);
            encoder.addFrame(img);
        }
        g2d.dispose();
        encoder.finish();
    }

效果:
java 发送微信表情,与程序二三事,ffmpeg,java,开发语言

视频生成GIF

ws.schild是基于ffmpeg的java工具包,是目前主流的对视频和音频进行转码、裁剪以及提取操作的java工具包。

依赖:

<dependency>
		<groupId>ws.schild</groupId>
		<artifactId>jave-core</artifactId>
		<version>3.1.1</version>
	</dependency>
   <!-- 根据系统二选一 -->
    <!-- win系统 -->
	<dependency>
		<groupId>ws.schild</groupId>
		<artifactId>jave-nativebin-win64</artifactId>
		<version>3.1.1</version>
	</dependency>
    <!-- linux系统 -->
	<dependency>
		<groupId>ws.schild</groupId>
		<artifactId>jave-nativebin-linux64</artifactId>
		<version>3.1.1</version>
	</dependency>

<dependency>
      <groupId>ws.schild</groupId>
      <artifactId>jave-all-deps</artifactId>
      <version>3.0.1</version>
    </dependency>

代码:

import ws.schild.jave.Encoder;
import ws.schild.jave.EncoderException;
import ws.schild.jave.MultimediaObject;
import ws.schild.jave.encode.EncodingAttributes;
import ws.schild.jave.encode.VideoAttributes;
import ws.schild.jave.info.MultimediaInfo;
import ws.schild.jave.info.VideoInfo;
import ws.schild.jave.info.VideoSize;

import java.io.File;
import java.util.Arrays;

public class VideoToGIf {

    //输出格式
    private static final String outputFormat = "gif";

    /**
     * 获得转化后的文件名
     *
     * @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文件路径
     * @return
     */
    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(10);
            //设置视频分辨率
            VideoSize targetSize = new VideoSize(sourceSize.getWidth() / 5, sourceSize.getHeight() / 5);
            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文件夹路径
     * @return
     */
    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));
            });
        }
    }

    public static void main(String[] args) {
        batchTransform("D:\\video", "D:\\video");
    }
}

效果:
java 发送微信表情,与程序二三事,ffmpeg,java,开发语言

发送微信

java 发送微信表情,与程序二三事,ffmpeg,java,开发语言
问题:

发送的gif动图变成文件形式怎么办?

解决:
文件太大和动图尺寸过大,超过了微信的尺寸范围,那么就会以文件的形式来发送你的gif动图。
所以当你的gif动图过大时,最好能裁剪一下尺寸或者是压缩一下大小,这样就能解决这个问题了。

小结

本文介绍了三种生成GIF动图的方式,自定义、图片转GIF、视频转GIF。赶快实践一下吧

java 发送微信表情,与程序二三事,ffmpeg,java,开发语言
点赞 收藏 关注
吾辈读书,只有两事,一者进德之事,讲求乎诚正修齐之道,以图无忝所生,一者修业之事,操习乎记诵词章之术,以图自卫其身。
文章来源地址https://www.toymoban.com/news/detail-782527.html

到了这里,关于Java图片或视频生成GIF动图,发送微信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mac上快速将视频转化为GIF动图

    1、找到需要转为GIF的视频,使用QuickTime Player打开,找到屏幕左上角的QuickTime Player菜单,点击【编辑】-【修剪】 2、视频下方会出现一个时间轴,拖动选取自己想要的时间段,修剪完成后保存  3、右键剪辑好的视频,点击【显示简介】,查看【尺寸】 4、打开keynote,新建文稿

    2024年02月15日
    浏览(37)
  • Matlab动图保存——GIF制作与视频制作

    在Matlab绘制动图时,若想保存成GIF或视频,可参考以下代码。 (1)GIF格式 (2)视频格式

    2024年02月07日
    浏览(50)
  • 怎么从视频中提取动图?一个方法快速提取gif

    视频以连续的方式播放一系列图像帧,通过每秒播放的帧数(帧率)来创做,由于GIF动图则以循环播放一系列静态图像帧的方式展现动画效果。由于视频的优势在于流畅的动画、丰富的细节和长时间播放,因此常用于电影、电视节目、广告等需要高质量动画的场景。而GIF动图

    2024年01月21日
    浏览(36)
  • vue 在线聊天实战范例(含选择发送表情、图片、视频、音频,自定义右键快捷菜单,一键复制,左右聊天气泡)

    链接:https://pan.baidu.com/s/170pb-MJlMxG2nRj_3Y2VFw?pwd=oknr 提取码:oknr

    2024年02月07日
    浏览(61)
  • 【MATLAB】将机械臂运动轨迹输出为avi视频或是gif动图

    使用 VideoWriter 函数创建一个名为“直线轨迹.avi”的视频文件,并设置视频的帧率为 10 帧每秒。 使用 robot0.plot 函数绘制初始关节角度为 [17, 15, 15, 15, 15, 15] 的机器人,并使用 plot3 函数绘制机器人的 轨迹 。 在绘制轨迹时,需要使用 squeeze 函数将机器人末端执行器的位姿矩阵

    2024年02月08日
    浏览(39)
  • 音视频剪辑|FFMPEG|windows10下的音视频格式转换,遮挡填充,GIF动图制作,背景音频抽取,替换

    最近对于音视频和图像的处理问题比较感兴趣,但发现很多目前需要的功能要么需要付费但不会过于麻烦,要么比较麻烦,很可能某个功能实现需要安装很多软件 例如,视频转GIF动图,该功能的实现要么使用Photoshop全家桶,要么找在线网站,或者是wps充会员,或者找其它方法

    2024年02月20日
    浏览(56)
  • 【Java】企业微信群机器人发送消息(文字、图片、MarkDown、文件消息)

    2022/4/22更新:新增可发送文件消息。 发送文件消息需要先将文件上传到企业微信的临时素材,url为https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?type=filekey=**********,这个key就是群机器人Webhook地址的key参数,在代码里我已经处理好了,只要有Webhook地址就行。获取到media_id,再拿

    2023年04月08日
    浏览(42)
  • Java原来可以这么玩!CV实现多张图片生成视频

    比如我像将几张图片变成一个视频的形式发不到短视频平台,虽然短视频平台也有上传图片变成视频的功能,但是我想要具体控制每张图片显示多久后切换到下一个图片,短视频平台目前无法实现,于是乎,我用java代码实现了这个功能。 生成视频展示 多张图片生成视频 Ja

    2024年01月17日
    浏览(44)
  • 微信小程序生成菊花码,通过Java修改中间图片为上传的图片,含前端使用方法

    场景: 在微信小程序环境下,用户上传个人头像,生成个人的微信小程序菊花维码,可以无限申请并生成二维码,然后二维码中间的圆形为用户自己上传的头像,最后可以通过生成的二维码扫码进入个人简介页面。 因为图片捣腾了一些时间,记录一下,类似问题给的时间都

    2024年02月13日
    浏览(210)
  • 如何将视频转成gif图?视频怎么转gif高清图片?

    在看电视或是短视频的时候,总能发现一些有趣的片段,当想把这些视频转gif图片发送给朋友的时候该怎么处理呢?其实可以试试专业的视频转gif工具,本文介绍一个视频在线转gif的方法,一起来了解一下吧。 打开首页,点击【视频转gif】按钮。 上传本地视频文件,选择截

    2024年02月14日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包