【发布时间】:2021-07-08 13:03:42
【问题描述】:
我有一个包含 3 页的文件 image.tiff。 我想将每个页面保存在 fs 中的单独文件中。 我尝试使用一个清晰的库来提取每个页面并保存它。 我从元数据高度、宽度和页数中得到,所以我可以计算裁剪区域的位置。 但是当我检查高度时,我发现我只得到了单页高度,而不是所有页面的总高度(我希望得到),所以我只得到了第一页的顶部。不酷。 任何想法如何分别裁剪每个页面?或针对我的问题的任何其他解决方案。 谢谢!
const image = sharp(filePath);
image
.metadata()
.then(function (metadata: any) {
splitPages(metadata.width, metadata.height, metadata.pages);
return image
});
function splitPages(width: number, heigth: number, pagesNum: number): void {
const page_heigth = heigth / pagesNum;
const left = 0;
const top_positions: number[] = [];
let top = 0;
for (let i = 0; i < pagesNum; i++) {
top = (pagesNum *heigth) - ((i + 1) * page_heigth);
top_positions.push(top);
}
top_positions.reverse();
top_positions.map((top, i)=>{
const top_position = top;
image.extract({ left: left, top: top_position, width: width, height: page_heigth })
.toFile(`C:\\sample_${i}.tiff`);
})
}
【问题讨论】:
标签: javascript node.js metadata tiff sharp