文件上传框,除了可以选择文件上传之外,还可以调用摄像头来拍摄照片或者视频并上传。capture属性可以判断前置or后置摄像头。在视频播放的过程中,用canvas定时截取一张图片,然后用gif.js生成一张GIF图,从而完成前端的视频压缩。
我这里使用的是Vue写的,以下是我的流程及代码:
一、下载gif.js相关文件,可以到这里下载,然后将这几个文件放在根目录的static/js里面。
gif.js相关文件及存放路径
二、下载依赖包:
npm i timers
三、在页面中声明:
i
具体内容如下所示:
首先,要在.wxml文件里面创建一个canvas,作用是承载压缩的图片,以供上传的时候获取
这个canvas不能隐藏,否则没效果,可以将其移至屏幕外。
然后呢,就是.js文件里面的方法了
// 点击加_压缩
takePhoto: function () {
var that = this;
let imgViewList = that.data.imgViewList; //这个是用来承载页面循环展示图片的
//拍照、从相册选择上
首先想一想我们有哪些需求?大多时候我们需要将一个File对象压缩之后再变为File对象传入到远程图片服务器;有时候我们也需要将一个base64字符串压缩之后再变为base64字符串传入到远程数据库;有时候后它还有可能是一块canvas画布,或者是一个Image对象,或者直接就是一个图片的url地址,我们需要将它们压缩上传到远程;面对这么多的需求,王二索性画了一张图:
Alt text
二、解决办法
如上图所示,王二一共写了七个方法,基本覆盖了JS中大部分文件类型的转换与压缩,其中:
1、 ur