多页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} );
我有一个包含 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} );