Javascript可以用于壓縮圖片,大幅度減小圖片的文件大小,提高網頁的加載速度。常見的壓縮算法包括有損壓縮和無損壓縮,通過JS代碼實現可以讓壓縮更加靈活方便。
無損壓縮可以通過調整圖片的顏色空間,減少圖片的質量而減小文件大小。例如,可以使用Canvas API中的toDataURL()方法將圖片轉為Base64編碼,并提高圖片的壓縮率。下面是一個簡單的示例代碼:
var canvas = document.createElement('canvas'); var ctx = canvas.getContext('2d'); var img = document.createElement('img'); img.onload = function () { canvas.width = img.width; canvas.height = img.height; ctx.drawImage(img,0,0); var data = canvas.toDataURL('image/jpeg',0.5); //設置壓縮的質量,0.5即50% } img.src = 'image.png';
有損壓縮則通過移除圖片中的冗余信息減小圖片的大小。與無損壓縮相比,有損壓縮會有一定的圖片質量損失,但是可以更好地減小文件大小。下面是一個使用JS的庫pica.js進行有損壓縮的示例:
var pica = require('pica')(); var srcCanvas = document.createElement('canvas'); var dstCanvas = document.createElement('canvas'); var srcImage = document.createElement('img'); var dstImage = document.createElement('img'); srcImage.src = 'image.png'; srcImage.onload = function () { srcCanvas.width = srcImage.width; srcCanvas.height = srcImage.height; dstCanvas.width = srcImage.width * factor; dstCanvas.height = srcImage.height * factor; pica.resize(srcImage, dstCanvas, { quality: 3, unsharpAmount: 80, unsharpRadius: 0.6, unsharpThreshold: 2 }, function (err) { if (err) throw err; dstImage.src = dstCanvas.toDataURL('image/jpeg', 0.8); }); };
在上面的示例中,使用了pica.js來實現壓縮,同時傳入了一些參數以控制壓縮的質量和效果。需要注意的是,壓縮后的圖片質量受多個因素影響,包括壓縮質量、圖片尺寸、圖片格式等。
綜上所述,使用Javascript進行圖片壓縮,無論是有損壓縮還是無損壓縮,都可以大幅度減小圖片文件的大小,提升網頁加載速度,更好地優化網站性能。