// 圖片壓縮(主函數(shù)宣蔚,下面兩個為調(diào)用)
export function imgZipPromise(file) {
return new Promise(async (resolve, reject) => {
const img = await readImg(file);
const blob = await compressImg(img, file.type, 1000, 1000);
const formData = new FormData();
formData.append("file", blob, "file_" + Date.parse(new Date()) + ".jpg"); // 文件對象
resolve(formData);
});
}
// 壓縮前將file轉(zhuǎn)換成img對象
function readImg(file) {
return new Promise((resolve, reject) => {
const img = new Image();
const reader = new FileReader();
reader.onload = function (e) {
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);
};
});
}
/**
* 壓縮圖片
*@param img 被壓縮的img對象
* @param type 壓縮后轉(zhuǎn)換的文件類型
* @param mx 觸發(fā)壓縮的圖片最大寬度限制
* @param mh 觸發(fā)壓縮的圖片最大高度限制
*/
function compressImg(img, type, mx, mh) {
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;
// 目標(biāo)尺寸
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");
});
}
圖片壓縮
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丐谋,“玉大人芍碧,你說我怎么就攤上這事『爬” “怎么了泌豆?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長吏饿。 經(jīng)常有香客問我踪危,道長,這世上最難降的妖魔是什么猪落? 我笑而不...
- 正文 為了忘掉前任贞远,我火速辦了婚禮,結(jié)果婚禮上笨忌,老公的妹妹穿的比我還像新娘蓝仲。我一直安慰自己,他們只是感情好官疲,可當(dāng)我...
- 文/花漫 我一把揭開白布杂曲。 她就那樣靜靜地躺著,像睡著了一般袁余。 火紅的嫁衣襯著肌膚如雪擎勘。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼欣硼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了恶阴?” 一聲冷哼從身側(cè)響起诈胜,我...
- 正文 年R本政府宣布,位于F島的核電站渴析,受9級特大地震影響晚伙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜俭茧,卻給世界環(huán)境...
- 文/蒙蒙 一咆疗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧母债,春花似錦午磁、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至衙熔,卻和暖如春登颓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背红氯。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 很多做圖片設(shè)計的伙伴每天都在處理著相當(dāng)多的圖片,天天和圖片打交道,難免會遇到圖片剛制作好文件太大的問題作烟,雖然PS等...
- 將圖片進行壓縮俗壹,電腦上的圖片太多了科汗,占了很多空間藻烤,卻又不能刪绷雏。 自媒體的工作要用到的圖片,視頻都會很多怖亭。同學(xué)的電腦...
- 引言:太多的圖片會增加服務(wù)器的壓力涎显,而目前用戶的手機像素越來越高,圖片的體積也越來越大兴猩,動則5-10多M,而當(dāng)項目...
- image-compressor 一個簡單的JavaScript圖像壓縮器期吓。使用瀏覽器的原生canvas.toBl...
- 免費圖片處理工具[https://getimg.co/] 圖片壓縮,圖片大小調(diào)整借尿,圖片裁剪刨晴,圖片格式轉(zhuǎn)換. 圖片壓...