【vue】利用compressorjs压缩图片巨细 [复制链接]
发表于 2026-2-10 10:07:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在 Vue.js 应用中利用 compressorjs 来压缩图片是一个常见的需求。compressorjs 是一个轻量级的 JavaScript 图片压缩库,它可以用来减小图片文件的巨细,从而优化性能
下面是怎样在 Vue.js 项目中利用 compressorjs 来压缩图片的步调:
1、安装 compressorjs:
起首,你须要安装 compressorjs 包。如果你还没有安装它,可以通过 npm 安装:
  1. npm install compressorjs --save
复制代码
2、引入 compressorjs:
在你的 Vue.js 组件中引入 compressorjs:
  1. import Compressor from 'compressorjs';
复制代码
3、创建压缩方法:
创建一个方法来处理处罚图片压缩。你可以将这个方法放在 Vue 组件的 methods 对象中。
  1. methods: {
  2.   compressImage(file) {
  3.     // 创建一个 Compressor 实例
  4.     new Compressor(file, {
  5.       quality: 0.6, // 压缩质量,范围从 0 到 1
  6.       success(result) {
  7.         // 成功回调
  8.         console.log('Compressed file:', result);
  9.         // 你可以在这里上传压缩后的图片
  10.       },
  11.       error(err) {
  12.         // 错误回调
  13.         console.log('Error occurred while compressing image:', err.message);
  14.       },
  15.     });
  16.   },
  17. },
复制代码
4、触发压缩:
你可以在用户选择图片后调用这个方法,比方通过一个文件输入 (<input type="file">):
  1. <template>
  2.   <div>
  3.     <input type="file" @change="onFileSelected" />
  4.   </div>
  5. </template>
复制代码
在 Vue 组件中添加一个变乱处理处罚器来处理处罚文件选择变乱:
  1. methods: {
  2.   onFileSelected(event) {
  3.     const file = event.target.files[0];
  4.     if (file) {
  5.       this.compressImage(file);
  6.     }
  7.   },
  8.   // ... 上面定义的 compressImage 方法
  9. },
复制代码
5、处理处罚压缩效果:
在 success 回调中,你可以处理处罚压缩后的文件。比方,你可以上传压缩后的图片到服务器或预览压缩后的图片。
  1. success(result) {
  2.   // 上传压缩后的图片到服务器
  3.   this.uploadImage(result);
  4.   // 或者预览压缩后的图片
  5.   const reader = new FileReader();
  6.   reader.onloadend = () => {
  7.     this.previewImage = reader.result;
  8.   };
  9.   reader.readAsDataURL(result);
  10. },
  11. uploadImage(file) {
  12.   // 上传文件到服务器的逻辑
  13. },
复制代码
6、预览图片:
你可以在模板中添加一个 <img> 标签来预览压缩后的图片:
  1. <template>
  2.   <div>
  3.     <input type="file" @change="onFileSelected" />
  4.     <img :src="previewImage" alt="Preview" v-if="previewImage" />
  5.   </div>
  6. </template>
复制代码
  1. data() {
  2.   return {
  3.     previewImage: null,
  4.   };
  5. },
复制代码




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表