你可以使用以下代码来实现这个功能:

const fs = require('fs');
const path = require('path');
const { createWorker } = require('tesseract.js');
const Compressor = require('compressorjs');

const fromDir = '/path/to/from/directory';
const destDir = '/path/to/destination/directory';

const compressImages = async (fromDir, destDir) => {
  try {
    // 读取fromDir中的所有文件
    const files = fs.readdirSync(fromDir);

    // 遍历文件列表
    for (const file of files) {
      const filePath = path.join(fromDir, file);
      const fileExtension = path.extname(file).toLowerCase();

      // 检查文件是否为jpg或png格式
      if (fileExtension === '.jpg' || fileExtension === '.png') {
        // 使用compressorjs压缩图片
        const compressedImage = await compressImage(filePath);

        // 写入压缩后的图片到destDir
        const destFilePath = path.join(destDir, file);
        fs.writeFileSync(destFilePath, compressedImage);
      }
    }

    console.log('Compression completed successfully!');
  } catch (error) {
    console.error('Compression failed:', error);
  }
};

const compressImage = (filePath) => {
  return new Promise((resolve, reject) => {
    // 使用compressorjs压缩图片
    new Compressor(filePath, {
      quality: 0.6, // 压缩质量,可调整为你需要的值
      success(result) {
        // 将压缩后的图片转换为Buffer
        const compressedImageBuffer = Buffer.from(result, 'base64');
        resolve(compressedImageBuffer);
      },
      error(error) {
        reject(error);
      },
    });
  });
};

// 调用函数进行图片压缩
compressImages(fromDir, destDir);

请确保在运行代码之前,你已经安装了 tesseract.jscompressorjs 模块,可以通过运行以下命令进行安装:

npm install tesseract.js compressorjs

/path/to/from/directory 替换为源目录的实际路径,将 /path/to/destination/directory 替换为目标目录的实际路径

js compressorjs 根据fromDir获取其中所有的jpg或者 png图片然后使用compressorjs压缩完成之后写入destDir

原文地址: https://www.cveoy.top/t/topic/i0zi 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录