美文网首页
nodejs 图片压缩

nodejs 图片压缩

作者: zhuyx0304 | 来源:发表于2024-09-17 16:39 被阅读0次
const fs = require('fs');
const path = require('path');
const sharp = require('sharp');

// 图片扩展名数组
const imageExtensions = ['.png'];

// 目录遍历函数
function walkDir(dirPath) {
    fs.readdir(dirPath, (err, files) => {
        if (err) {
            console.error(`Error reading directory: ${dirPath}`);
            return;
        }

        files.forEach(file => {
            const filePath = path.join(dirPath, file);
            fs.stat(filePath, (error, stats) => {
                if (error) {
                    console.error(`Error getting file info: ${filePath}`);
                    return;
                }

                // 如果是目录,则递归调用 walkDir
                if (stats.isDirectory()) {                    
                    walkDir(filePath);
                } else { // 否则是文件
                    const extname = path.extname(file).toLowerCase();
                    if (imageExtensions.includes(extname)) {
                        const fileName = path.basename(filePath);
                        const sourcePath = dirPath.replace(/\\/g, '/');
                        const outputPath = dirPath.replace('source', 'dist');

                        if (!fs.existsSync(outputPath)) {
                            fs.mkdirSync(outputPath);
                        }

                        processImage(`${sourcePath}/${fileName}`, `${outputPath}/${fileName}`);
                    }
                }
            });
        });
    });
}

// 处理图片的函数
function processImage(sourcePath, outputPath) {
    sharp(sourcePath)
        .png({ quality: 75 })
        .toFile(outputPath) // 输出到新的文件
        .then(() => {
            console.log(`${sourcePath}-图片压缩成功`);
        })
        .catch(error => {
            console.error(`${sourcePath}-图片压缩失败`, error);
        });
}

// 调用函数开始遍历目录
const targetDirectory = 'source'; // 替换为实际目录路径
walkDir(targetDirectory);

相关文章

  • linux安装必要配置

    yum安装javalinux安装tomcat安装nodejs安装nodejs压缩包方式 更新nodejs更新报错c...

  • 图片压缩组件

    图片压缩 图片压缩

  • iOS 图片压缩方法

    两种图片压缩方法 两种图片压缩方法:压缩图片质量(Quality),压缩图片尺寸(Size)。 压缩图片质量 通过...

  • iOS 图片压缩限制大小最优解

    iOS 图片压缩限制大小最优解 图片的两种压缩方法 1.1 压缩图片质量 1.2 压缩图片尺寸 压缩图片使图片文件...

  • nodejs之express 图片上传及压缩

    multer安装: 注意:destination代码中的路径不使用path拼接否则可能会出现错误Error: EN...

  • centos安装nodejs

    下载nodejs压缩包 官网:https://nodejs.org/en/download/[https://no...

  • iOS 图片压缩限制大小最优解

    概要: 图片的两种压缩方法1.1 压缩图片质量1.2 压缩图片尺寸压缩图片使图片文件小于指定大小2.1 压缩图片质...

  • iOS 图片压缩限制大小

    一、两种图片压缩方法 两种压缩图片的方法:压缩图片质量(Quality),压缩图片尺寸(Size)。 压缩图片质量...

  • iOS 图片压缩方法

    两种图片压缩方法 两种压缩图片的方法:压缩图片质量(Quality),压缩图片尺寸(Size)。 压缩图片质量 N...

  • 图片压缩方法

    两种图片压缩方法 压缩图片质量(quality)、压缩图片尺寸(size) 压缩图片质量 或 前者可以控制压缩比例...

网友评论

      本文标题:nodejs 图片压缩

      本文链接:https://www.haomeiwen.com/subject/utvgljtx.html