Auto.js GIF

  教程含有两个部分,第一是利用GifView的jar包采用最简单的方法在ui界面进行gif的播放,第二是利用ffmpeg插件将视频转换为Gif。

一.ui界面播放gif

  在网上找了很多参考,但修改为js代码会很麻烦,最后选择使用GifView这个jar包来进行gif的播放,体积小而且很简单。

文末下载的文件素材已包含这个jar包以及相关api介绍,若想了解更多,需要科学上网进入jar包原网址:

https://code.google.com/p/gifview/

  等到下载好GifView的jar包,将它移动到工程目录下,像使用控件那样就可以调用它:


"ui";
/**
 * 作者: 姜来式
 * QQ: 1216951671
 **/
runtime.loadJar("./GifView.jar")
ui.layout(
    <vertical  w="*" h="*" gravity="center">
        <com.ant.liao.GifView w="100" h="100" id="gif"/>
        <com.ant.liao.GifView w="200" h="200" id="gif2"/>
        <button id="convert" w="*" h="auto" text='视频转GIF' textAllCaps="false" style="Widget.AppCompat.Button.Colored" />
    </vertical>
);
//读取GIf文件
var g = files.readBytes("./test.gif")
// 设置显示的大小,拉伸或者压缩
ui.gif.setShowDimension(200, 200); 
// 设置 Gif 图片源
ui.gif.setGifImage(g)

var g2  = files.readBytes("./热爱学习.gif")
ui.gif2.setShowDimension(400,400);  
ui.gif2.setGifImage(g2)

  随后便可看到,gif在ui界面动了起来:

二.视频转gif

  利用ffmpeg将视频或者视频的某一段转换成gif动态图片非常简单,只需要一条命令。由于auto.js也有这个插件,那么就选择使用此插件进行GIF的转换。

ui.convert.click(function(){
   var intent = new Intent();//意图跳转,选择视频文件
    intent.setType("video/*");
    /* 使用Intent.ACTION_GET_CONTENT这个Action */
    intent.setAction(Intent.ACTION_GET_CONTENT);
    activity.startActivityForResult(intent, 1);
    activity.getEventEmitter().on("activity_result", (requestCode, resultCode, data) => {
        if (requestCode == 1) {
            if (resultCode == -1) {
                let uri = data.getData();
                //  let p = app.getPathFromUri(uri)
                //转换为绝对路径
                realpath = getfilepath(uri)
                //取文件名,例如1.MP4就取1
                name = files.getNameWithoutExtension(realpath)
                //设置文件名1.gif
                filename = rootpath+name+".gif"
                //toastLog(filename)

                // 使用ffmpeg提取文件为mp3,参见https://www.baidu.com/s?wd=ffmpeg%20%E8%A7%86%E9%A2%91%E6%8F%90%E5%8F%96mp3
                 //-s用于设定分辨率, -r 用于设定帧数,一般设置8帧左右就行。
                let result = ffmpeg.inProcess.exec(` -i "${realpath}" -s 442x960 -r 8  "${filename}" `);
         
                toast("转换成功")
                media.scanFile(filename)
                app.viewFile(filename)

            }
        }
    })
    
})

ffmpeg命令简单介绍:

-ss 起始时间 -t 持续时间 -i 输入文件 -s 分辨率  -r 帧数  输出文件 

ffmpeg命令参考:

https://www.xstui.com/read/1082

如果视频较长,那么当你选择文件后就会卡顿一会才会转换成功,这些都是正常现象

代码、jar包及相关素材下载地址:

https://jianglaishi.lanzout.com/iHJ050dhlpzc

apk下载地址:

https://jianglaishi.lanzout.com/iSPWo0dhlu0h
密码:bdbp

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值