Я изо всех сил пытаюсь получить изображения с оптимизированной конфигурацией, используя узел и выражать с sharp .
Мне удалось создать метод загрузки с использованием Jimp, который конвертирует изображения шириной более 2000px иразмер файла больше 2 Мб, и он работает нормально, я натолкнулся на десятки библиотек, которые делают то же самое, Jimp более эффективен в памяти для того, что я построил.
В основном, у меня есть в моем жидкостном шаблонизаторе, как это:
<img src="{{i.images[0].path}}" alt="{{i.name}}">
Я хотел бы создать маршрутизатор, который считывает изображения из маршрута MongoDB / projects / project с массивом изображений и передает изображения обратно в оптимизированный рендер и изменяет его размер в соответствии с инструкциями в конфигурации с острым, яхотел бы дополнительно настроить этот метод, возможно, для промежуточного программного обеспечения, которое будет работать глобально на сайте с изображениями с параметрами запроса, которые будут отображаться по требованию, а также улучшено обнаружением устройств для повышения производительности загрузки:
const request = require('request');
const fs = require("fs");
const path = require("path");
const sharp = require('sharp');
module.exports = (req, res, next) => {
request(process.env.REQUEST_PATH + "/projects?projectType=Refurbishment%20and%20Extensions", (err, response, body) => {
if (err) {
console.log(err);
} else {
const contentData = JSON.parse(body);
contentData.projects.forEach((value, key) => {
if (value.images[0].path.length > 0) {
const readStream = fs.createReadStream(path.resolve("./" + value.images[0].path));
//const getBuffer = Buffer.from(path.resolve("./" + value.images[0].path));
const trasnform = sharp(readStream).resize(200, 200, {
fit: "contain"
}).jpeg({
quality: 20
}).toBuffer((err, data, info) => {
if (err) {
console.log(err)
} else {
console.log("BUFFERED RESIZED", info);
//console.log("BUFFER", data);
}
});
console.log(trasnform); //nothing working
readStream.pipe(trasnform).pipe(res);
}
});
const data = {
name: "Refurbishment and Extensions Projects",
content: contentData
};
res.render('./refurbishment-and-extensions-projects', {
page: data
});
}
});
}
В некоторых попыткахвернул информацию от Sharp с изображением конвЯ не уверен, почему, но теперь я получаю сообщение об ошибке [Ошибка: входной файл отсутствует], но есть буфер для чтения!
В данный момент я не разборчив в решении, но в отношении некоторых характеристикtest sharp.js или canvas.js было бы неплохо использовать, пожалуйста, дайте мне некоторое представление об этом.