基于uniapp + vue实现微信相册,在实现了微信相册的基础上增加以下功能

1: 图片编辑

2: 视频编辑

3: 文件压缩


技术实现

  • 开发环境:HbuilderX + nodejs
  • 技术框架:uniapp + vue2.x
  • 测试环境:App端(Android + IOS)
  • 代码:开源

效果概览


业务分析

这里主要是承接上次写的仿微信相册(https://www.yuque.com/zhimikeji/zdtppo/hmhvn6)的继续扩展下去,对于插件而言,当用户点击图片非选区的位置的时候,插件会调用回调事件反馈点击编辑事件,具体如下:

// 相册事件回调
AlbumCallbackHanlder (res) {
let { type, data } = res
switch (type) {
// 触发点击编辑图视频
case 'onClickEditImage':
// 这里的data就是触发的文件路径
console.log(res);
break;
default:
console.log(res)
break;
}
}

当我们触发了编辑事件之后,我们就可以开始调用api执行编辑图视频

编辑图视频

编辑图视频相对来说简单,我们只需要传入文件路径,插件自己内部会自动解析应该是编辑图片还是编辑视频,但是我们提供的路径必须是原生可识别的路径, 以 / 开头。如果是特殊路径,可以使用plus自带的方法进行路径转换,具体如下:

let localPath = plus.io.convertLocalFileSystemURL(path)

引入插件对象

var sdkwx = uni.requireNativePlugin('Zhimi-EditImage');

编辑图视频

// path 原文件路径
// distPath 编辑后文件保存路径
sdkwx.edit(path, distPath => {
console.log(distPath)
})

这里其实很简单的就是传入路径之后就会弹出来文件编辑界面,但是不一样的是如果我们编辑之后需要同步的更新到相册中,我们需要调用以下方法

更新相册Item

// 这里编辑完成之后调用,过后调用默认更新最后一次编辑的文件
albumView.changeListEditImage(path)

图片视频压缩

在这里一般得到的是原图,原视频。随着现在手机设备的性能提升,相机分辨率也随之提升,拍出来的视频图片往往已经超过了1080p的范畴了,对于服务器来说压力非常在,在这里我们可以通过插件内置的压缩模块压缩图片视频,一共有3种压缩方式。

引入压缩模块

var sdkwx = uni.requireNativePlugin('Zhimi-compression');

压缩图片

// 0.5 压缩质量比
// path 传入文件路径,/ 开头
// distPath 返回文件路径, / 开头,前端显示要加file:// 前缀
sdkwx.compressPicQuality(0.5, path, distPath => {
console.log(distPath)
})

缩放图片

// 750 目标高度
// path 传入文件路径,/ 开头
// distPath 返回文件路径, / 开头,前端显示要加file:// 前缀
sdkwx.compressPicSize(750, path, distPath => {
console.log(distPath)
})

压缩视频

// path 传入文件路径,/ 开头
// 10 超过10M体积才压缩视频,根据插件内置算法自动压缩,单位M
// distPath 返回文件路径, / 开头,前端显示要加file:// 前缀
sdkwx.compressVideo(path, 10, distPath => {
console.log(distPath)
})

这里还是需要注意的一点就是文件路径的问题,传入给插件的路径需要是 / 开头,因为原生是不认uniapp的_doc, _www之类开头的特殊路径的,如果是特殊路径,最好先转化一遍,用plus的方法就可以完美转成原生路径啦

let localPath = plus.io.convertLocalFileSystemURL(path)

ok,到这里对于uniapp实现微信相册扩展出图视频压缩的功能就分享结束啦,希望感兴趣的小伙伴可以动手试试看哦

【进阶】uniapp复现微信相册功能之【图视频编辑 + 压缩】的更多相关文章

  1. uniapp框架如何实现仿微信相册:图视频过滤、相册选择功能

    今天我们分享基于uniapp + vue实现仿微信相册插件实例,该插件完全还原了微信相册的功能 1: 相册选择 2: 图片,视频类型过滤 3: 自定义相册界面UI 技术实现 开发环境:Hbuilder ...

  2. uni-app聊天室|vue+uniapp仿微信聊天实例|uniapp仿微信App界面

    一.介绍 运用UniApp+Vue+Vuex+swiper+uniPop等技术开发的仿微信原生App聊天室|仿微信聊天界面实例项目uniapp-chatroom,实现了发送图文消息.表情(gif图), ...

  3. [5] 微信公众号开发 - 微信支付功能开发(网页JSAPI调用)

    1.微信支付的流程 如下三张手机截图,我们在微信网页端看到的支付,表面上看到的是 "点击支付按钮 - 弹出支付框 - 支付成功后出现提示页面",实际上的核心处理过程是: 点击支付按 ...

  4. 微信公众号开发 [05] 微信支付功能开发(网页JSAPI调用)

    1.微信支付的流程 如下三张手机截图,我们在微信网页端看到的支付,表面上看到的是 "点击支付按钮 - 弹出支付框 - 支付成功后出现提示页面",实际上的核心处理过程是: 点击支付按 ...

  5. 转:HTML5页面如何在手机端浏览器调用相机、相册功能

    HTML5页面如何在手机端浏览器调用相机.相册功能 开发微信端浏览器访问的HTML5的页面,页面中有一个<input id="input" type="file&q ...

  6. Bing Maps进阶系列四:路由功能服务(RouteService)

    Bing Maps进阶系列四:路由功能服务(RouteService) Bing Maps提供的路由功能服务(RouteService)可以实现多方位的计算地图上的路线指示,路径行程等功能,比如说实现 ...

  7. 使用uni-app开发微信小程序

    uni-app 开发微信小程序 前言 9月份,开始开发微信小程序,也曾调研过wepy/mpvue,考虑到后期跨端的需求,最终选择使用了uni-app,本文主要介绍如何使用uni-app搭建小程序项目, ...

  8. HTML5页面如何在手机端浏览器调用相机、相册功能

    最近在做一个公司的保险信息处理系统项目,开发微信端浏览器访问的HTML5的页面,页面中有一个<input id="input" type="file"/& ...

  9. php框架tp3.2.3和js写的微信分享功能心得,分享的标题内容图片自定义

    https://blog.csdn.net/weixin_42231483/article/details/81585322 最近用PHP的tp3.2.3框架和js写的微信分享功能心得,分享的标题内容 ...

随机推荐

  1. CF1290E Cartesian Tree

    考虑笛卡尔树的意义: 一个点在笛卡尔树中的子树,代表以他为最小/最大值的区间. 所以一个点的子树大小,一定是类似到达序列边界或者被一个比他更大的数隔离. 考虑记录 \(l_i,r_i\) 为第 \(i ...

  2. Codeforces 704C - Black Widow(dp)

    Codeforces 题目传送门 & 洛谷题目传送门 u1s1 感觉这种题被评到 *2900 是因为细节太繁琐了,而不是题目本身的难度,所以我切掉这种题根本不能说明什么-- 首先题目中有一个非 ...

  3. logname

    logname命令用来显示用户名称. 语法 logname(选项) 选项 --help:在线帮助: --vesion:显示版本信息.

  4. 【Python小试】根据外显子位置生成CDS序列

    已知 genomic_dna.txt TCGATCGTACCGTCGACGATGCTACGATCGTCGATCGTAGTCGATCATCGATCGATCGACTGATCGATCGATCGATCGATC ...

  5. git放弃修改,强制覆盖本地代码

    1.git fetch --all  //从远程拉取最新的代码 不merge 2.git reset --hard origin/develop  //使用指定分支的代码(此处develop)强制覆盖 ...

  6. Java日期时间操作基础——包含JDK1.8时间操作新特性

    JDK1.7日期时间操作 示例小结 public class DateTest { public static final String FORMAT_DATE = "yyyy-MM-dd& ...

  7. springcloud - alibaba快速上手 - 更新完毕

    1.简单对比一下springcloud与springcloud-alibaba 2.准备知识 官网:https://nacos.io/zh-cn/ 查看cloud和springboot的对应关系 ht ...

  8. SimpleNVR如何把安防监控画面推流到微信公众号直播

    背景需求 进入移动互联网时代以来,微信已成为许多企业除官网以外必备的宣传渠道,当3.2亿直播用户与九亿微信用户的势能增加,在微信上开启直播已成为越来越多企业的不二选择. 需求分析 微信公众号作为平台来 ...

  9. 关于redis HSCAN count参数不生效的问题

    这的确是个坑,HSCAN是为了处理大量数据而设计的,可能也是因为这个原因,在数据量较少的情况下count参数并不会生效,具体阈值是多少并没有实际测验过不过可以断定的是一百条数据一下估计是不会生效的.

  10. day31 协程

    day31 协程 一.死锁与递归锁 ​ 所谓死锁:是指两个或者两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产 ...