vue使用lrz进行压缩图片

26 篇文章 0 订阅
10 篇文章 0 订阅

在vue中使用lrz去压缩图片

lrz是一款压缩图片成base64的插件,兼容IE10以上及大部分非IE浏览器(chrome、微信什么的)

但是lrz团队已经放弃维护了,所以使用的时候需要谨慎

使用的时候注意,有可能会和你本身代码的插件进行冲突,我遇到报错,但是怎么都解决不了,后来排查到我的项目环境有问题,然后重置之前的环境,再进行使用的时候就正常了,具体是插件冲突还是什么情况,暂时还没找到具体的原因!

下包:

通过npm或者bower方式进行下载

npm i lrz(推荐)
bower install lrz

通过sdn方式进行引用

<script src="./lrz.bundle.js"></script>

使用:

方式1:

<input id="file" type="file" accept="image/*" />
通过change事件可以获取得到用户选择的图片
document.querySelector('#file').addEventListener('change', function () {
    lrz(this.files[0])
        .then(function (rst) {
            // 处理成功会执行
            console.log(rst);
        })
        .catch(function (err) {
            // 处理失败会执行
        })
        .always(function () {
            // 不管是成功失败,都会执行
        });
});

方式2:

如果不是采用传入图片的形式,那么可以采用传递路径的方式获取

lrz('./大x.png')
    .then(function (rst) {
    // 处理成功会执行
    })
    .catch(function (err){
    // 处理失败会执行
    })
    .always(function () {
    // 不管是成功失败,都会执行
});

关于lrz的参数:

lrz(file,[option])
//可选参数
//1、file 通过 input:file 得到的文件,或者直接传入图片路径
//2、[options] 这个参数允许忽略
//3、width {Number} 图片最大不超过的宽度,默认为原图宽度,高度不设时会适应宽度。
//4、height {Number} 同上
//5、quality {Number} 图片压缩质量,取值 0 - 1,默认为0.7
//6、fieldName {String} 后端接收的字段名,默认:file

返回结果:

//返回结果
//返回值是一个promise对象
then(rst)
catch(err)

返回结果的解读:

rst.formData //后端可处理的数据
rst.file //压缩后的file对象(默认已经丢在rst.formData有一份了),需要注意的是如果压缩率太低的话,这个会是原始的file对象
rst.fileLen //生成后的图片的大小,后端可以通过此值来校验是否传输完整
rst.base64 //生成后的图片base64,后端可以处理此字符串为图片,也直接用于img.src = base64
rst.base64Len //生成后的base64的大小,后端可以通过此值来校验是否传输完整 (如果采用base64上传方式)
rst.origin //也就是原始的file对象,里面存了一些原始文件的信息,例如大小,日期等。

demo:

 lrz(
     "http://localhost:8080/img/logo.82b9c7a5.png"
     ).then((res) => {
     console.log(res);
 });

结果:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue使用FFmpeg进行视频压缩可以分为以下步骤: 1. 安装FFmpeg库 在Vue项目中安装FFmpeg库,可以使用npm或yarn命令: ``` npm install @ffmpeg/ffmpeg ``` 或 ``` yarn add @ffmpeg/ffmpeg ``` 2. 引入FFmpeg库 在Vue组件中引入FFmpeg库: ```javascript import { createFFmpeg } from '@ffmpeg/ffmpeg' const ffmpeg = createFFmpeg({ log: true }) ``` 3. 加载FFmpeg库 在Vue组件中加载FFmpeg库: ```javascript async function loadFFmpeg() { await ffmpeg.load() } ``` 4. 压缩视频 在Vue组件中使用FFmpeg进行视频压缩: ```javascript async function compressVideo() { // 选择要压缩的视频文件 const videoFile = document.getElementById('video-file').files[0] // 读取视频文件 await ffmpeg.FS('writeFile', videoFile.name, await fetchFile(videoFile)) // 设置FFmpeg运行参数 await ffmpeg.run('-i', videoFile.name, '-codec:v', 'libx264', '-crf', '28', '-preset', 'medium', '-codec:a', 'aac', '-b:a', '128k', '-pix_fmt', 'yuv420p', 'output.mp4') // 读取压缩后的视频文件 const data = await ffmpeg.FS('readFile', 'output.mp4') // 将压缩后的视频文件转换成Blob对象 const blob = new Blob([data.buffer], { type: 'video/mp4' }) // 将Blob对象转换成File对象 const file = new File([blob], 'output.mp4', { type: 'video/mp4' }) // 显示压缩后的视频文件 document.getElementById('video-preview').src = URL.createObjectURL(file) } ``` 上述代码中,`fetchFile()`是一个异步函数,用于读取本地文件并将其转换成Uint8Array数组。下面是`fetchFile()`函数的实现代码: ```javascript async function fetchFile(file) { const reader = new FileReader() reader.readAsArrayBuffer(file) await new Promise(resolve => reader.onload = resolve) return new Uint8Array(reader.result) } ``` 5. 在Vue模板中添加HTML元素 在Vue模板中添加HTML元素,用于选择要压缩的视频文件和显示压缩后的视频文件: ```html <input type="file" id="video-file" accept="video/*"> <video id="video-preview" controls></video> <button @click="compressVideo">压缩视频</button> ``` 在上述代码中,`<input>`元素用于选择要压缩的视频文件,`<video>`元素用于显示压缩后的视频文件,`<button>`元素用于触发视频压缩操作。 以上就是在Vue使用FFmpeg进行视频压缩的步骤,希望对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值