【发布时间】:2021-03-14 07:58:30
【问题描述】:
我正在创建一个函数来调整 youtube-dl 下载的缩略图大小。 youtube-dl 下载 4 个缩略图,但它们的尺寸不符合我的需要,因此必须调整它们的大小。因为我需要的图像小于 youtube-dl 下载的最大缩略图,所以该大缩略图用作创建调整大小缩略图的基础。
这是我用来调整缩略图大小的函数:
import fs from 'fs-extra';
import sharp from 'sharp';
let thumbnailData = fs.readFileSync('D:/original 1280x720 (122,346 bytes).jpg');
await generateThumbnailFile(thumbnailData, 720, 405, 'D:/medium resized 720x405 (329,664 bytes).jpg');
await generateThumbnailFile(thumbnailData, 168, 95, 'D:/small resized 168x95 (26,246 bytes).jpg');
const generateThumbnailFile = async (sourceData, width, height, filepath) => {
try {
const data = await sharp(sourceData)
.resize({ width: width, height: height, fit: sharp.fit.inside })
.jpeg({ quality: 100, chromaSubsampling: '4:4:4' })
.toBuffer();
fs.writeFileSync(filepath, data);
} catch (err) {
throw err;
}
}
但是,我调整大小的缩略图的大小比我预期的要大得多。中等大小的缩略图的文件大小几乎是最大原始缩略图的三倍,而小尺寸的缩略图的文件大小是其可比较的原始缩略图的近三倍。
我可以做些什么来减小调整后缩略图的文件大小?
【问题讨论】: