清晰头脑 2024-02-01 15:32 采纳率: 9.1%
浏览 1
已结题

nodejs使用sharp拆分多页tif文件

img


node.js使用sharp报错,没用过sharp不知道有没有写错,来人帮忙看一下代码有没有问题

const fs = require('fs')
const sharp = require('sharp')
async function splitMultiPageImage(inputPath,outputPathTemplate){
    const image = sharp(inputPath)
    const pages = await image.metadata().then(metadata => metadata.pages);
    for (let i = 0 ; i < pages ; i++){
        const pageStream = await image.clone().extractPage(i).toBuffer();
        const outputPath = outputPathTemplate.replace('%d',i + 1) + '.jpg';
        await sharp(pageStream)
        .jpeg()
        .toFile(outputPath);
    }
}
splitMultiPageImage('./test.tif','./output/page-%d.jpg')
.then(() => console.log('图片拆分完成'))
.catch(err => console.error('图片拆分过程中出现问题',err))

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-02-01 15:34
    关注

    引自免费微信小程序:皆我百晓生

    当然,我会尽我所能帮助你解决使用sharp在Node.js中拆分多页TIFF文件的问题。首先,请提供一下你的代码片段,这样我可以更好地分析和给出建议。

    不过,在没有具体代码的情况下,我可以先展示一个基本的示例来说明如何使用sharp库处理多页TIFF并将其拆分成单个图像:

    const sharp = require('sharp');
    
    async function splitMultipageTiff(inputPath, outputPathTemplate) {
      // 打开一个多页TIFF文件
      const tiffStream = sharp(inputPath);
    
      let pageCounter = 1;
      
      // 遍历TIFF中的每一页
      await tiffStream.metadata().then(async (metadata) => {
        for(let i = 0; i < metadata.pages; i++) {
          // 提取第i页的内容
          const pageStream = await tiffStream.clone().extract({ left: 0, top: 0, width: metadata.width, height: metadata.height, page: i+1 });
    
          // 将该页保存为独立的JPEG或PNG文件(根据需要调整格式)
          const outputPath = outputPathTemplate.replace('{page}', String(pageCounter));
          await pageStream.toFile(outputPath);
    
          console.log(`Saved page ${pageCounter} to ${outputPath}`);
          pageCounter++;
        }
      }).catch(err => {
        console.error('Error reading TIFF metadata:', err);
      });
    }
    
    // 使用示例:
    splitMultipageTiff('./input.tif', './output/page-{page}.png');
    

    这段代码首先加载了一个多页TIFF文件,并获取其元数据以了解总共有多少页。接着,它循环遍历所有页面,将每个页面提取出来并保存为单独的文件。这里假设输出路径模板字符串包含{page}占位符,将会被实际页码替换。

    请确保你已经正确安装了sharp库,可通过npm进行安装:

    npm install sharp
    

    如果在运行上述代码时遇到问题,请提供具体的错误信息及你的代码片段,以便我能提供更精确的帮助。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月5日
  • 修改了问题 2月1日
  • 创建了问题 2月1日

悬赏问题

  • ¥15 前台多人编辑时怎么让每个人保存刷新都互不干扰
  • ¥20 如何用Python删除单元格内连续出现的重复词?
  • ¥15 WangEditor嵌入到geeker-admin中,回车没有办法换行
  • ¥30 stm32f103c8t6制作万能红外遥控器
  • ¥15 有人会fastcrud写前端页面吗
  • ¥15 如何解除Uniaccess管控
  • ¥15 微信小程序跳转关联公众号
  • ¥15 Java AES 算法 加密采用24位向量报错如何处理?
  • ¥15 使用X11可以找到托盘句柄,监控到窗口点击事件但是如何在监听的同时获取托盘中应用的上下文菜单句柄
  • ¥45 字符串操作——数组越界问题