首先,你需要通过 npm 安装 Sharp.js:
npm install sharp
然后,在需要使用 Sharp.js 的 JavaScript 文件中引入库:
const sharp = require('sharp');
Sharp.js 提供了丰富的图像处理功能,包括读取、转换格式、裁剪、旋转、滤镜应用等。
sharp('input.jpg') .toFile('output.png', (err, info) => { if (err) throw err; console.log(`Output image saved with size ${info.size}`); });
sharp('input.jpg') .toFormat('webp') .toFile('output.webp', (err, info) => { if (err) throw err; console.log(`Converted to WebP, output image saved with size ${info.size}`); });
sharp('input.jpg') .extract({ left: 100, top: 50, width: 300, height: 200 }) .toFile('output_cropped.jpg', (err, info) => { if (err) throw err; console.log(`Cropped image saved with size ${info.size}`); });
sharp('input.jpg') .rotate(90) .toFile('output_rotated.jpg', (err, info) => { if (err) throw err; console.log(`Rotated image saved with size ${info.size}`); });
sharp('input.jpg') .resize(null, 600) // 先缩放到指定尺寸 .sharpen() // 应用锐化滤镜 .blur(10) // 应用模糊滤镜,参数为模糊半径 .toFile('output_filtered.jpg', (err, info) => { if (err) throw err; console.log(`Filtered image saved with size ${info.size}`); });
Sharp.js 支持流式处理,可以高效地处理大文件或网络流:
const http = require('http'); const fs = require('fs'); http.get('http://example.com/large-image.jpg', (response) => { response.pipe( sharp() .resize(null, 600) .jpeg({ quality: 80 }) .toBuffer((err, buffer, info) => { if (err) throw err; console.log(`Resized & compressed image has size ${info.size}`); fs.writeFileSync('output_from_stream.jpg', buffer); }) ); });
Sharp.js 支持并行处理多个图像,提高批量处理的效率:
const fs = require('fs'); const path = require('path'); const { promisify } = require('util'); const sharp = require('sharp'); const readdirAsync = promisify(fs.readdir); async function processImages(directory, outputDir) { const files = await readdirAsync(directory); const imageFiles = files.filter((file) => /\.(jpg|png)$/i.test(file)); const resizePromises = imageFiles.map(async (imageFile) => { const inputPath = path.join(directory, imageFile); const outputPath = path.join(outputDir, `${Date.now()}_${imageFile}`); // 进行图像处理操作 }); await Promise.all(resizePromises); }
Sharp.js 允许开发者控制输出图像的质量和压缩级别,平衡图像质量和文件大小。例如,使用 mozjpeg 优化 JPEG 图像:
sharp('input.jpg') .resize(null, null, { withoutEnlargement: true }) .toFormat('jpeg', { quality: 75 }) .toFile('output_compressed.jpg', (err, info) => { if (err) throw err; console.log(`Compressed image saved with size ${info.size}`); });
Sharp.js 正确处理颜色空间、嵌入的 ICC 配置文件和 alpha 透明通道,确保输出的图像与原始图像保持一致。
Sharp.js 是一个功能强大、高效且易于使用的 Node.js 图像处理库,适合处理各种图像编辑和转换任务。通过深入了解其各项功能和技巧,你可以轻松地在 Node.js 应用中实现高质量的图像处理。
到此这篇关于Node.js使用Sharp.js进行图像处理的实践与技巧的文章就介绍到这了,更多相关Node.js Sharp.js图像处理内容请搜索插件窝以前的文章或继续浏览下面的相关文章希望大家以后多多支持插件窝!