多页tiff格式节点js

multi pages tiff format node js

我有一个包含 3 页的文件 image.tiff。 我想将每个页面保存在 fs 中的单独文件中。 我尝试使用一个 sharp 库来提取每个页面并保存它。 我从 metadate 高度、宽度和页数中获得,因此我可以计算裁剪区域的位置。 但是当我检查高度时,我发现我只得到了单页高度,而不是所有页面的总高度(我希望得到),所以我只得到了第一页的顶部。不酷。 任何想法如何分别裁剪每一页?或我的问题的任何其他解决方案。 谢谢!

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`);

})

}

您使用 sharp 的 ctor 工厂的第一行代码应提供 option 以允许提取多个页面。

const image = sharp(filePath, {pages:-1} );