【问题标题】:multi pages tiff format node js多页tiff格式节点js
【发布时间】: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


    【解决方案1】:

    您的第一行代码,在您使用Sharp 的ctor 工厂的地方,应该提供option 以允许提取多个页面。

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

    【讨论】:

    • 我使用了 {page: 1}。谢谢,你帮了我很多!
    猜你喜欢
    • 2020-05-16
    • 2017-06-10
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多