UNPKG

image-utility-library

Version:

A Node.js library for compressing, resizing, cropping, and applying effects to images.

43 lines (38 loc) 1.22 kB
import sharp from 'sharp'; import imagemin from 'imagemin'; import imageminMozjpeg from 'imagemin-mozjpeg'; import imageminPngquant from 'imagemin-pngquant'; /** * Compress an image buffer. * @param {Buffer} imageBuffer - The image buffer. * @param {Number} quality - Compression quality (1-100). * @returns {Promise<Buffer>} - Compressed image buffer. */ const compressImage = async (imageBuffer, quality = 70) => { try { // Get image metadata to determine format const metadata = await sharp(imageBuffer).metadata(); // Initial compression with Sharp let compressed = await sharp(imageBuffer) .toFormat(metadata.format) .toBuffer(); // Further compression with imagemin compressed = await imagemin.buffer(compressed, { plugins: [ imageminMozjpeg({ quality, progressive: true }), imageminPngquant({ quality: [Math.max(0.1, quality / 100), Math.min(0.9, quality / 100)], speed: 4 }) ] }); return compressed; } catch (error) { console.error('Error compressing image:', error); throw error; } }; export default compressImage;