成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Compressor.js 全面指南:從入門到實戰,掌握前端圖片壓縮技巧

開發 前端
本文將帶你從零開始,逐步掌握 Compressor.js 的使用,并通過一個完整的示例展示其在實際項目中的應用。

在現代 Web 開發中,圖像處理是一個常見的需求。尤其是在用戶上傳圖片的場景下,如頭像上傳、內容發布等,我們常常需要對圖片進行壓縮以減少體積并提升加載速度。Compressor.js 就是一款輕量而強大的 JavaScript 圖片壓縮庫,它可以在瀏覽器端對圖片進行高質量的壓縮和裁剪操作。

本文將帶你從零開始,逐步掌握 Compressor.js 的使用,并通過一個完整的示例展示其在實際項目中的應用。

一、什么是 Compressor.js?

Compressor.js 是一個基于 HTML5 Canvas 和 JavaScript 編寫的客戶端圖片壓縮工具。它支持多種配置選項,包括壓縮質量、輸出尺寸、旋轉、縮放等功能,適用于現代瀏覽器。

  • 支持 JPEG/PNG/WebP 格式
  • 壓縮圖片大小,控制畫質
  • 裁剪、旋轉、縮放圖片
  • 零依賴(不依賴 jQuery 或其他庫)
  • 支持 Promise 異步處理

二、安裝與引入方式

你可以通過以下幾種方式引入 Compressor.js:

方法1:使用 npm 安裝(推薦用于模塊化項目)

npm install compressorjs --save

然后在你的 JS 文件中導入:

import Compressor from 'compressorjs';

方法2:直接引入 CDN(適合傳統網頁)

<script src="https://cdn.jsdelivr.net/npm/compressorjs@1.1.1/dist/compressor.min.js"></script>

三、基本用法

假設你有一個 <input type="file" id="file"> 元素,用戶選擇圖片后,我們可以使用 Compressor.js 來壓縮該圖片。

<input type="file" id="file" accept="image/*">
<img id="preview" style="max-width: 100%; margin-top: 20px;" />
document.getElementById('file').addEventListener('change', function (e) {
  const file = e.target.files[0];
  if (!file) return;
  new Compressor(file, {
    quality: 0.6, // 壓縮質量(0.1 ~ 1)
    success(result) {
      console.log('壓縮后的文件大小:', result.size);
      // 顯示壓縮后的圖片預覽
      const reader = new FileReader();
      reader.onload = function (event) {
        document.getElementById('preview').src = event.target.result;
      };
      reader.readAsDataURL(result);
    },
    error(err) {
      console.error('壓縮失敗:', err.message);
    }
  });
});

注意:success(result) 中的 result 是一個 Blob 類型的壓縮后文件對象,可以直接上傳服務器。

四、常用配置項詳解

參數名

類型

默認值

描述

quality

number

0.8

壓縮質量(僅對 jpeg/webp 生效)

width

number

undefined

設置輸出寬度

height

number

undefined

設置輸出高度

rotate

number

undefined

旋轉角度(90/180/270)

convertSize

number

5000000

大于該值才進行壓縮(單位字節)

mimeType

string

undefined

輸出格式,如 'image/jpeg'

strict

boolean

true

是否嚴格限制寬高比

success

function

required

成功回調函數

error

function

optional

錯誤回調函數

五、進階用法:裁剪 + 壓縮 + 上傳

結合 Cropper.js 可以實現圖片裁剪后再壓縮上傳,是頭像上傳場景的經典組合。

示例流程:

  • 用戶選擇圖片
  • 使用 Cropper.js 裁剪圖片區域
  • 獲取裁剪后的 canvas 數據
  • 使用 Compressor.js 壓縮圖片
  • 提交至服務器

六、實戰應用:上傳壓縮后的圖片到服務器

function uploadImage(file) {
  const formData = new FormData();
  formData.append('avatar', file);
  fetch('/api/upload', {
    method: 'POST',
    body: formData,
  }).then(res => res.json())
    .then(data => {
      console.log('上傳成功:', data);
    })
    .catch(err => {
      console.error('上傳失敗:', err);
    });
}

結合前面的壓縮邏輯:

new Compressor(file, {
  quality: 0.6,
  success(result) {
    uploadImage(result); // 上傳壓縮后的 Blob 文件
  }
});

七、注意事項與優秀實踐

  • 避免重復壓縮:如果圖片已經很?。ㄈ缧∮?100KB),可以跳過壓縮。
  • 移動端適配:建議設置最大寬度為 1024px,防止大圖占用過多內存
  • 兼容性處理:舊版 IE 不支持 canvas.toBlob(),可考慮添加 polyfill
  • 用戶體驗優化:壓縮過程可能會阻塞 UI,建議使用 Web Worker(但 Compressor.js 目前不支持)。

八、總結

Compressor.js 是前端圖像壓縮領域的優秀工具,尤其適合需要在瀏覽器端快速壓縮圖片并上傳的場景。它的 API 簡潔、功能豐富,且易于集成到各類項目中。

責任編輯:趙寧寧 來源: 編程經驗共享
相關推薦

2025-05-06 07:55:00

JavaScrip圖片壓縮前端

2023-10-30 08:53:36

Python輸入輸出

2024-09-06 17:45:55

Linux磁盤

2024-07-03 10:09:29

2024-07-09 09:33:18

2023-06-28 11:49:56

Linux命令

2021-11-29 14:18:05

Nuxt3靜態Nuxt2

2009-07-03 18:49:00

網吧綜合布線

2023-11-08 08:32:16

2025-06-23 10:20:00

開源機器學習PyTorch

2020-10-18 17:09:14

前端開發技術

2022-05-06 13:19:13

JS前端

2025-04-22 07:52:59

2024-07-30 08:19:14

2023-05-09 08:34:51

PythonWith語句

2016-11-02 18:43:02

javascripthtml5vue.js

2024-03-01 01:25:40

結構化日志可讀性

2025-04-11 02:30:00

2024-01-10 16:46:13

Kubernetes容器

2015-12-16 10:30:18

前端開發指南
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区免费 | 日韩一级 | 91夜色在线观看 | 看片国产 | 欧美一区| 日本电影韩国电影免费观看 | 亚洲欧洲日本国产 | 久久国产精品一区二区三区 | 成人精品鲁一区一区二区 | 99精品国产成人一区二区 | 欧美一级久久 | 91av导航| 毛片免费视频 | 日韩av一区在线观看 | 亚洲一区二区网站 | 成人精品一区二区三区中文字幕 | 精品一区二区在线观看 | 午夜午夜精品一区二区三区文 | 亚洲精品一区二区在线观看 | 99久久精品国产一区二区三区 | 久久综合一区二区 | 国产91久久久久久 | 久在草 | 欧美中国少妇xxx性高请视频 | 精品欧美一区二区三区久久久 | 亚洲精品9999久久久久 | 国产精品99久久久久久宅男 | 国产成人一区二区三区久久久 | 亚洲精品视频在线 | 又爽又黄axxx片免费观看 | 91欧美| 日本午夜免费福利视频 | 国产一区二区三区在线 | 亚洲综合无码一区二区 | 欧洲视频一区二区 | 天堂在线免费视频 | 日韩成人精品在线观看 | 欧美日本一区二区 | 一级aaaaaa毛片免费同男同女 | 成人福利| 色频|