国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

開箱即用的前端圖片壓縮方案

開發 前端
前端實現圖片壓縮無非就是在用戶上傳圖片文件后, 將file?轉換成image對象,然后再利用canvas? 及其 api 將圖片壓縮成指定體積。

前端實現圖片壓縮的背景

我們都知道在“寸土寸金”的互聯網時代,速度是第一競爭力, 雖然我們的5G發展已經搖搖領先, 但是也經不住用戶在一個網頁里傳很多“巨無霸”圖片, 最終導致的結果就是頁面“龜速”打開......

圖片

那么作為技術人, 當然也有一堆的解決方案, 比如:

  • 壓縮圖片再上傳
  • 將圖片上傳到圖床, 利用圖床壓縮能力和CDN節點就近分發
  • 圖片流式加載
  • 圖片懶加載/ 預加載

當然聰明的小伙伴也會將上面的方案組合, 設計更優秀的圖片“提速”方案。

今天不會和大家把所有方案都介紹一遍,因為網上也有很多實踐, 接下來會從前端技術提升的角度, 分享一下如何用原生 javascript, 實現從圖片上傳到圖片自定義壓縮的完整方案,大家可以把文章中介紹的方案直接用于自己的實際開發中,或者基于它設計更棒的圖片壓縮方案。

圖片

實現圖片壓縮的方案

前端實現圖片壓縮無非就是在用戶上傳圖片文件后, 將file?轉換成image對象,然后再利用canvas? 及其 api 將圖片壓縮成指定體積如下流程:

圖片

代碼實現

首先我們先實現將file?轉換成image對象,這里我們用到了FileReader API, 代碼如下:

// 壓縮前將file轉換成img對象
function readImg(file:File) {
return new Promise((resolve, reject) => {
const img = new Image()
const reader = new FileReader()
reader.onload = function(e:any) {
img.src = e.target.result
}
reader.onerror = function(e) {
reject(e)
}
reader.readAsDataURL(file)
img.onload = function() {
resolve(img)
}
img.onerror = function(e) {
reject(e)
}
})
}

這里使用 promise 來設計生成圖片數據的方法,接下來我們看看核心的圖片壓縮源碼:

/**
* 壓縮圖片
* @param img 被壓縮的img對象
* @param type 壓縮后轉換的文件類型
* @param mx 觸發壓縮的圖片最大寬度限制
* @param mh 觸發壓縮的圖片最大高度限制
* @param quality 圖片質量
*/
function compressImg(img: any, type:string, mx: number, mh: number, quality:number = 1) {
return new Promise((resolve, reject) => {
const canvas = document.createElement('canvas')
const context = canvas.getContext('2d')
const { width: originWidth, height: originHeight } = img
// 最大尺寸限制
const maxWidth = mx
const maxHeight = mh
// 目標尺寸
let targetWidth = originWidth
let targetHeight = originHeight
if (originWidth > maxWidth || originHeight > maxHeight) {
if (originWidth / originHeight > 1) {
// 寬圖片
targetWidth = maxWidth
targetHeight = Math.round(maxWidth * (originHeight / originWidth))
} else {
// 高圖片
targetHeight = maxHeight
targetWidth = Math.round(maxHeight * (originWidth / originHeight))
}
}
canvas.width = targetWidth
canvas.height = targetHeight
context?.clearRect(0, 0, targetWidth, targetHeight)
// 圖片繪制
context?.drawImage(img, 0, 0, targetWidth, targetHeight)
canvas.toBlob(function(blob) {
resolve(blob)
}, type || 'image/png', quality)
})
}

這里通過控制 canvas?的寬高,以及對 canvas? 的 toBlob設置參數,來實現自定義的圖片壓縮。

責任編輯:武曉燕 來源: 趣談前端
相關推薦

2023-01-15 20:28:32

前端圖片壓縮

2023-11-04 12:43:44

前端圖片參數

2021-08-31 15:53:48

Nuxt 開箱服務

2023-03-08 21:25:58

開源工具庫開箱

2016-11-02 18:43:02

javascripthtml5vue.js

2011-12-14 00:58:38

vStart虛擬化實施DELL

2021-09-26 05:41:47

基礎設施連接無線技術網絡

2025-07-10 00:00:05

開箱ApacheHertzbeat

2021-09-01 17:43:32

StreamNativ開源

2021-09-28 09:30:18

uni-appVue 3.0uniCloud

2023-01-29 07:49:57

2022-08-02 09:01:55

后臺管理模版

2015-06-30 09:49:19

管理平臺開源KVM

2022-01-03 18:15:35

FlaskTepHttpRunner

2013-11-01 09:37:19

Android系統架構工具

2025-05-15 08:35:00

2019-11-25 00:00:00

開源技術 數據

2023-04-04 10:09:09

2021-04-22 10:28:52

開發技能代碼
點贊
收藏

51CTO技術棧公眾號

国产精品对白交换视频| www.久久久久| 免费网站在线观看人| 色婷婷久久av| 天堂影院一区二区| 日本福利在线观看| 国产精品自产拍在线观| 一区二区激情小说| 国产一区福利| 奇米影视亚洲色图| 国产精品嫩草视频| 国产精品豆花视频| 精品国产亚洲在线| 天天操夜夜操国产精品| 国产视频一二三区| 日韩av一区二区在线| 亚洲区一区二| 香蕉视频免费在线播放| 国产精品一区二区免费| 亚洲欧洲精品成人久久奇米网| 日韩电影精品| 亚洲爆乳无码专区| 操91在线视频| 成人欧美一区二区三区| 岳的好大精品一区二区三区| 免费网站www在线观看| 日韩中文字幕国产| 国产人久久人人人人爽| 先锋影音国产精品| 午夜视频国产| 国产高清在线一区二区| 色婷婷综合久久久| 奇米精品一区二区三区四区 | www.日韩系列| 成人毛片视频在线观看| 免费日韩一区二区三区| 亚洲图区欧美| 亚洲精品欧美精品| 国产一区二区黄| 亚洲成人综合网站| 亚洲制服av| av成人资源| 欧美aa在线观看| 永久免费在线观看| 能在线观看的av网站| 久久久久久久久一区二区| 欧美成人精品h版在线观看| 欧美日韩视频第一区| 91香蕉视频污在线| 六月天综合网| 九九亚洲视频| 日本一道本久久| 日韩女优视频免费观看| 国产精品美女久久久浪潮软件| 影音先锋另类| 77777少妇光屁股久久一区| 久久99精品久久久| 精品精品精品| 免费在线看成人av| 欧美性xxxxxx| 日韩av影院| 欧美洲成人男女午夜视频| 亚洲自拍偷拍九九九| 日韩欧美国产麻豆| 国产三级精品三级在线观看国产| 亚州欧美一区三区三区在线| 福利视频一区二区| 午夜精品网站| 欧美特黄一级| 日韩中文字幕不卡| 国产精品毛片一区二区三区| 超碰在线资源| 日韩毛片在线| 国产精品一区二区三区av| 无码人妻丰满熟妇区毛片| 国产精品揄拍500视频| 久久午夜色播影院免费高清| 欧美精品hd| 一本色道久久综合亚洲精品婷婷 | 国产伦一区二区三区| 五月婷婷一区| 久久精品最新地址| 热久久一区二区| 不卡av影片| 日韩国产小视频| 欧美成人免费一级人片100| 91免费观看国产| 久久精品66| caoporn97在线视频| 一区国产精品| 最近2019免费中文字幕视频三| 久久综合给合久久狠狠狠97色69| 成人av二区| 国产传媒在线| 偷拍自拍在线| 屁屁影院ccyy国产第一页| 久久躁日日躁aaaaxxxx| 欧美性猛交xxxx偷拍洗澡| 日韩精品一级二级| 蜜桃在线一区| caoporn国产精品免费视频| 久久av一区二区三区漫画| 欧美日韩性生活| 亚洲国产精品影院| 国产麻豆视频一区| 国产一区二区三区四区二区| 区一区二区三区中文字幕| 91精品一区二区三区久久久久久| 国产精品91xxx| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 成人激情校园春色| 免费看av不卡| 大伊香蕉精品视频在线| 日韩在线视频免费观看| 国产成人av在线播放| 欧美一区二区播放| 亚洲手机成人高清视频| 黄一区二区三区| 日韩精品诱惑一区?区三区| 日韩久久久久| 日本久久一二三四| 国产精品主播直播| 色婷婷av一区二区三区软件| 国产精品不卡一区| 欧美大片网址| 很黄很黄激情成人| 99riav久久精品riav| 欧美日韩午夜激情| www.日韩av.com| 国产精品久久久久久久天堂第1集| 日韩视频免费播放| 1pondo在线播放免费| 精品国产午夜肉伦伦影院| 久久在线精品| 欧美性20hd另类| 久久99精品久久久久久琪琪| 欧美专区福利在线| 欧美诱惑福利视频| 91人人爽人人爽人人精88v| 国产精品日韩在线一区| 91色视频在线导航| 99久久99| 久久精品一区二| 国产又大又硬又粗| 在线观看亚洲精品| 蜜桃久久久久久久| 久久久久97| 超碰免费在线播放| 三年中国国语在线播放免费| 国产伦精品一区二区三毛| 久久精品电影网| 色菇凉天天综合网| 91视频在线看| 在线综合亚洲| 国产极品模特精品一二| 国产在线观看a| 亚洲一级免费在线观看| 久久99久久精品国产| 欧美乱大交xxxxx另类电影| 91福利资源站| 国产精品久久777777| 极品销魂美女一区二区三区| 视频国产一区| 欧美大片1688网站| 日本在线免费| 啦啦啦在线视频免费观看高清中文| 伊人狠狠色丁香综合尤物| 国产精品久久久av久久久| 一本大道久久加勒比香蕉| 色婷婷综合视频在线观看| 久久蜜臀中文字幕| 日韩高清不卡一区二区| 999国产精品视频| 中文久久电影小说| 黑人巨大精品| 黄网站视频在线观看| 97在线免费| 人妻少妇精品无码专区二区 | 天天色综合色| 久久一级大片| av免费不卡国产观看| 亚洲人成电影| wwwwww.色| 久久精品国产精品亚洲精品色| 91社区国产高清| 久久人人爽人人爽人人片av高清| 亚洲精品99久久久久| 欧美亚洲综合色| 一区二区三区四区国产精品| 91热门视频在线观看| 久久成人免费网| 国产精品女主播一区二区三区| 国产欧美日韩在线观看视频| 日本精品视频| 在线观看爽视频| 91精品久久| av二区在线| 国产尤物视频在线| 亚洲sss视频| 麻豆传媒在线播放|