最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue與compressor.js實現(xiàn)高效文件壓縮的方法

 更新時間:2024年03月22日 11:10:01   作者:水星記_  
本文將介紹基于 Vue 框架和 compressor.js 的上傳時文件壓縮實現(xiàn)方法,通過在上傳過程中對文件進行壓縮,減小文件大小,提升上傳速度,為用戶創(chuàng)造更快捷、高效的上傳體驗,感興趣的朋友跟隨小編一起看看吧

前言

上傳文件是一個常見的需求,并且文件大小往往成為限制因素之一。為了提升用戶體驗和節(jié)省帶寬消耗,上傳時的文件壓縮便顯得格外重要。本文將介紹基于 Vue 框架和 compressor.js 的上傳時文件壓縮實現(xiàn)方法,通過在上傳過程中對文件進行壓縮,減小文件大小,提升上傳速度,為用戶創(chuàng)造更快捷、高效的上傳體驗。

安裝

npm install image-compressor.js
yarn add image-compressor.js

compressor.js 常用的屬性

屬性描述
quality設(shè)置壓縮圖像的質(zhì)量。值范圍為0到1之間,其中0表示最低質(zhì)量,1表示最高質(zhì)量。
width指定壓縮圖像的目標寬度??梢允褂孟袼鼗虬俜直葋肀硎尽?/td>
height指定壓縮圖像的目標高度??梢允褂孟袼鼗虬俜直葋肀硎尽?/td>
minWidth限制壓縮后的圖像寬度的最小值。如果圖像的寬度小于此值,將不會進行壓縮。
minHeight限制壓縮后的圖像高度的最小值。如果圖像的高度小于此值,將不會進行壓縮。
maxWidth限制壓縮后的圖像寬度的最大值。如果圖像的寬度超過此值,將會按比例縮小。
maxHeight限制壓縮后的圖像高度的最大值。如果圖像的高度超過此值,將會按比例縮小。
convertSize確定是否在壓縮時調(diào)整圖像的大小。如果設(shè)置為true,將根據(jù)目標寬度和高度自動調(diào)整圖像大小。
checkOrientation檢查圖像的方向信息,并根據(jù)需要進行自動旋轉(zhuǎn)。

這些是 compressorjs 插件的一些常見屬性,用于控制圖像的壓縮質(zhì)量、尺寸和方向。你可以根據(jù)實際需求設(shè)置這些屬性以獲得想要的壓縮效果。更多詳細信息和屬性,請參閱插件的官方文檔。

封裝文件

import ImageCompressor from 'image-compressor.js';
export default function compressFile(file) {
  return new Promise((resolve, reject) => {
    const options = {
      success(result) {
        // 將壓縮后的 Blob 轉(zhuǎn)換為 File 對象(如果組件支持Blob則不用這一步)
        const compressedFile = new File([result], file.name, {
          type: file.type,
          lastModified: Date.now(),
        });
        resolve(compressedFile);
      },
      error(e) {
        reject(e);
      },
    };
    if (file.size > 5 * 1024 * 1024) {
      options.quality = 0.6; // 壓縮質(zhì)量
      options.convertSize = false;//不進行圖像尺寸的調(diào)整
      options.checkOrientation = false; // 圖片翻轉(zhuǎn),默認為false
    }
    new ImageCompressor(file, options);
  });
}

main.js

// 全局掛載
import compressFile from '@/utils/compressFile';
Vue.prototype.$compressFile = compressFile;

使用文件

<template>
  <div>
    <van-field label="照片">
      <template #input>
        <van-uploader :after-read="(file, detail) => clzpAfterRead(file, detail, 'xszzp')" v-model="cszp" :max-count="1" accept="image/*" />
      </template>
    </van-field>
  </div>
</template>
<script>
import { uploadFile } from "@/api/publicApi";
export default {
  data() {
    return {
      cszp: "",
    };
  },
  mounted() {},
  methods: {
    async clzpAfterRead(file, detail, name) {
      console.log(file.file.size, "未壓縮大小");
      // 調(diào)用壓縮圖片的方法 this.$compressFile
      const compressedFile = await this.$compressFile(file.file);
      console.log(compressedFile.size, "壓縮后大小");
      let formData = new FormData();
      formData.append("file", compressedFile);
      uploadFile(formData).then((res) => {
        // 執(zhí)行操作
      });
    },
  },
};
</script>

實現(xiàn)過程

  • 首先,需要在 Vue 組件中引入 ImageCompressor 庫??梢酝ㄟ^ import ImageCompressor from 'image-compressor.js' 來實現(xiàn);
  • 下面是一個名為 compressFile 的函數(shù)。該函數(shù)接受一個文件(file)作為參數(shù),并返回一個 Promise 對象,用于處理異步操作;
  • 在 compressFile 函數(shù)內(nèi)部,創(chuàng)建了一個 options 對象,其中包含了成功(success)和錯誤(error)的回調(diào)函數(shù);
  • 如果文件的大小超過 5MB,則設(shè)置 options 對象的 quality 屬性為 0.6,表示壓縮質(zhì)量為 60%;
  • 接下來,創(chuàng)建一個 ImageCompressor 實例,將文件和 options 對象作為參數(shù)傳遞給它。這將觸發(fā)圖片壓縮的過程;
  • 當壓縮成功時,會調(diào)用 success 回調(diào)函數(shù)。在回調(diào)函數(shù)中,將壓縮后的 Blob 對象轉(zhuǎn)換為 File 對象,并使用 resolve 方法將其作為 Promise 的返回值返回;
  • 當壓縮出錯時,會調(diào)用 error 回調(diào)函數(shù)。在回調(diào)函數(shù)中,使用 reject 方法將錯誤信息作為 Promise 的返回值返回;
  • 接下來是一個 Vue 組件的模板代碼。在模板中使用了 van-uploader 組件來實現(xiàn)圖片的上傳功能;
  • 在 methods 屬性中定義了一個名為 clzpAfterRead 的方法。該方法會在圖片上傳成功后觸發(fā)。參數(shù) file 表示上傳的文件,detail 表示上傳的詳細信息,name 表示上傳文件的名稱;
  • 在 clzpAfterRead 方法中,首先打印出上傳文件的原始大小 file.file.size。接下來,調(diào)用 this.$compressFile 方法對上傳的文件進行壓縮;
  • 使用 await 關(guān)鍵字等待壓縮操作完成,并將壓縮后的文件賦值給 compressedFile 變量;
  • 打印出壓縮后文件的大小 compressedFile.size;
  • 創(chuàng)建一個 FormData 對象 formData,并將壓縮后的文件添加到 formData 中;
  • 調(diào)用 uploadFile 方法,將 formData 作為參數(shù)傳遞給它,并使用 .then 方法處理上傳成功后的響應(yīng);
  • 在 .then 方法中可以執(zhí)行后續(xù)操作,例如更新界面或處理上傳成功的數(shù)據(jù)。

總結(jié)起來,這段代碼的實現(xiàn)思路是:通過 van-uploader 組件實現(xiàn)圖片上傳功能,在上傳成功后調(diào)用 clzpAfterRead 方法,將上傳的圖片文件通過 image-compressor.js 庫進行壓縮,并將壓縮后的文件再次上傳到服務(wù)器。整個過程使用了 Vue 框架以及 Promise 對象來處理異步操作,以實現(xiàn)圖片上傳時壓縮大小的功能。

實現(xiàn)效果

到此這篇關(guān)于Vue與compressor.js實現(xiàn)高效文件壓縮的文章就介紹到這了,更多相關(guān)Vue compressor.js文件壓縮內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • uni-app 使用編輯器創(chuàng)建vue3 項目并且運行的操作方法

    uni-app 使用編輯器創(chuàng)建vue3 項目并且運行的操作方法

    這篇文章主要介紹了uni-app 使用編輯器創(chuàng)建vue3 項目并且運行的操作方法,目前uniapp 創(chuàng)建的vue3支持 vue3.0 -- 3.2版本 也就是說setup語法糖也是支持的,需要的朋友可以參考下
    2023-01-01
  • 在小程序/mpvue中使用flyio發(fā)起網(wǎng)絡(luò)請求的方法

    在小程序/mpvue中使用flyio發(fā)起網(wǎng)絡(luò)請求的方法

    這篇文章主要介紹了在小程序/mpvue中使用flyio發(fā)起網(wǎng)絡(luò)請求的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • 詳解Vue3中useLocalStorage的用法

    詳解Vue3中useLocalStorage的用法

    這篇文章主要為大家詳細介紹了Vue3中useLocalStorage用法的相關(guān)知識,文中的示例代碼講解詳細,具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以了解一下
    2023-10-10
  • vue無法加載文件C:\xx\AppData\Roaming\npm\vue.ps1系統(tǒng)禁止運行腳本

    vue無法加載文件C:\xx\AppData\Roaming\npm\vue.ps1系統(tǒng)禁止運行腳本

    這篇文章主要介紹了vue?:?無法加載文件?C:\xx\AppData\Roaming\npm\vue.ps1...系統(tǒng)上禁止運行腳本問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Electron-store本地存儲功能用法詳解

    Electron-store本地存儲功能用法詳解

    這篇文章主要為大家介紹了Electron-store本地存儲功能的用法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • vite+tsc打包報TS類型錯誤的問題及解決過程

    vite+tsc打包報TS類型錯誤的問題及解決過程

    文章主要介紹了在使用vite+tsc打包Vue3項目時,可能會遇到TS類型錯誤的問題,通過配置tsconfig.json文件,可以解決這個問題,設(shè)置"checkTypes":?false可以關(guān)閉依賴包的類型檢查,從而避免不必要的錯誤提示
    2026-03-03
  • 分析總結(jié)20道Vue高頻面試題

    分析總結(jié)20道Vue高頻面試題

    這篇文章主要為大家介紹了分析總結(jié)20道Vue高頻面試題示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • 記一次用vue做的活動頁的方法步驟

    記一次用vue做的活動頁的方法步驟

    這篇文章主要介紹了記一次用vue做的活動頁的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • elementUi 中table表尾插入行的實例

    elementUi 中table表尾插入行的實例

    這篇文章主要介紹了elementUi 中table表尾插入行的實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • vue 跳轉(zhuǎn)到其他頁面并關(guān)閉當前頁面的實現(xiàn)代碼

    vue 跳轉(zhuǎn)到其他頁面并關(guān)閉當前頁面的實現(xiàn)代碼

    我在做一個調(diào)用虛擬機錄屏的一個操作,需要在瀏覽器頁面上,點擊按鈕后,關(guān)閉當前頁面里的某一個頁面,并且打開瀏覽器新頁面是虛擬機的頁面,本文給大家介紹vue 跳轉(zhuǎn)到其他頁面并關(guān)閉當前頁面的實現(xiàn)代碼,感興趣的朋友一起看看吧
    2023-09-09

最新評論

昭平县| 电白县| 双江| 肃南| 昭觉县| 阿拉善左旗| 陕西省| 巫溪县| 留坝县| 大同县| 剑河县| 太和县| 绍兴市| 衡阳市| 遂溪县| 曲靖市| 年辖:市辖区| 巩留县| 邹城市| 梅河口市| 阜城县| 韩城市| 平南县| 濮阳县| 多伦县| 昌都县| 镇远县| 鄄城县| 阿鲁科尔沁旗| 铁力市| 万宁市| 赣州市| 渭源县| 余江县| 岗巴县| 常山县| 上思县| 汉中市| 朝阳县| 惠来县| 新竹市|