У меня есть папка внутри src/images/original
Сценарий nodejs находится в корневом каталоге.Вывод должен быть src/images/processed
Таким образом, он должен получить каждый файл из папки original
и вывести их с измененным размером и переименовать в папку processed
.
Я также пытался запустить ее как
sharp(filePath).resize(width, null).toFile(outputPath)
sharp(filePath).resize(width, null).toFile(outputPath)
sharp(filePath).resize(width, null).toFile(outputPath)
sharp(filePath).resize(width, null).toFile(outputPath)
в каждой строке для разных значений ширины и outputPath, но это не работает.Когда я обернул эти операторы в массив и Promise.all при втором запуске, скрипт запустился, но не тогда, когда выходной каталог был пуст.Я совершенно запутался в том, что происходит.Я начал изучать узел недавно.
Вот то, что я придумал, моя лучшая попытка до сих пор
const fs = require("fs");
const sharp = require("sharp");
const rimraf = require("rimraf");
const path = require("path");
// delete the processed folder
// rimraf.sync(imagesDirectory + "/processed");
const imagesDirectory = "./src/images";
if (!fs.existsSync(imagesDirectory + "/processed")) {
fs.mkdirSync(imagesDirectory + "/processed");
}
const imageFileNames = fs.readdirSync(imagesDirectory + "/original");
const imageWidthBreakPoints = [2000, 1200, 1000, 800, 600, 400];
imageFileNames.forEach(file => {
const filePath = imagesDirectory + "/original/" + file;
imageWidthBreakPoints.forEach(width => {
const outputPath =
imagesDirectory +
"/processed/" +
path.parse(file).name + // name
"-" +
parseInt(width) + //2000w
"w.jpg";
console.log(filePath, outputPath);
transformers(filePath, outputPath, width);
});
});
function transformers(filePath, outputPath, width, withoutEnlargement = true) {
const readableStream = fs.createReadStream(filePath);
const writableStream = fs.createWriteStream(outputPath);
const transform = sharp().resize(width, null, {
withoutEnlargement: withoutEnlargement
});
readableStream.pipe(transform).pipe(writableStream);
}
Нет ошибок, код работает успешно, но нет вывода.