Js利用Canvas實現(xiàn)圖片壓縮功能
最近做的APP項目涉及到手機拍照上傳圖片,因為手機拍照的圖片通常都比較大,所以上傳的時候就會很慢。為此,需要對圖片進行壓縮處理來優(yōu)化上傳功能。以下是具體實現(xiàn):
/*
* 圖片壓縮
* img 原始圖片
* width 壓縮后的寬度
* height 壓縮后的高度
* ratio 壓縮比率
*/
function compress(img, width, height, ratio) {
var canvas, ctx, img64;
canvas = document.createElement('canvas');
canvas.width = width;
canvas.height = height;
ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, width, height);
img64 = canvas.toDataURL("image/jpeg", ratio);
return img64;
}
上面是一個圖片壓縮函數(shù),返回 base64 格式的圖片數(shù)據(jù)。 其中壓縮比率取值(0 - 1 之間)越大圖片質量越高。建議不要將圖片轉為 png 格式,因為轉為 png 格式,圖片的 base64 比轉為 jpeg 的要長不少。下面是實際調用:
var image = new Image();
image.src = "/img/test.jpg";
image.onload = function(){
var img64 = compress(image, 500, 400, 0.7);
document.getElementById("test").src = img64;
}
注意: 壓縮方法的調用以及圖片src賦值必須放在圖片的 onload 方法里面。因為只有等圖片加載完成后才能進行壓縮處理,從而轉換為base64 進行賦值。 如果放在 onload 方法外面,則可能壓縮代碼無效,或者會生成一張純黑色的圖片。
以上這篇Js利用Canvas實現(xiàn)圖片壓縮功能就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
JS中利用FileReader實現(xiàn)上傳圖片前本地預覽功能
FileReader 對象允許Web應用程序異步讀取存儲在用戶計算機上的文件(或原始數(shù)據(jù)緩沖區(qū))的內容,使用 File 或 Blob 對象指定要讀取的文件或數(shù)據(jù)。下面通過本文給大家介紹JS中利用FileReader實現(xiàn)上傳圖片前本地預覽功能,需要的朋友參考下2018-03-03
基于JavaScript實現(xiàn)頁面輪播圖漸變效果的示例代碼
這篇文章主要給大家分享如何使用JavaScript實現(xiàn)一個頁面輪播圖漸變效果,輪播圖是網(wǎng)頁開發(fā)中常見的功能之一,它能夠展示多個圖片或內容,并以一定的時間間隔進行自動切換,而通過添加漸變效果,可以讓切換過程更加平滑流暢,感興趣的小伙伴可以自己動手嘗試一下2023-10-10
JavaScript中while循環(huán)的基礎使用教程
這篇文章主要給大家介紹了關于JavaScript中while循環(huán)的基礎使用教程,文中通過示例代碼介紹的非常詳細,對大家學習或者使用JavaScript具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2020-08-08

