提问者:小点点

多页tiff格式节点js


我有一个文件Image.TIFF有3页。我想在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`);

})

}


共1个答案

匿名用户

您使用夏普的ctor工厂的第一行代码应该提供允许提取多个页面的选项。

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