如何使用 gmmagick 将多个 tiff 文件转换为 png 文件



我必须将乘数tiff转换为单独的png文件。对于 isntance,我有一个 tiff 文件,它有 3 页,我想将其转换为 3 个单独的 png。在下面的代码中,我只能将tiff文件的第一页转换为png。

gm(__dirname+'/Tiff/Recorded.tiff').write(__dirname+'/Png/cpng.png',(err)=>{
if(!err){
    console.log('Done');
}
else {
    console.log(err);
}

});

例如,如何转换此 tiff 文件的第二页?

第二个问题是关于将 tiff 文件添加到另一个 tiff 中。例如,我有一页的 tiff 文件,有三页的第二个 tiff 文件?我调查了我找到了追加方法,但它不起作用。下面的代码!

gm(__dirname+'/Tiff/Recorded.tiff')
.append(__dirname+'/Tiff/another.tiff').append(false);

我可以将一页的 TIFF 添加到三页的 TIFF 中并获得一个包含四页的 TIFF 文件吗?

你的问题很不清楚,所以我会给你看一些例子,你可以提取你需要的位。

假设我们从一个名为 6page.tif 的单个 TIFF 文件开始,其中包含 6 页。让我们看看有多少页:

gm identify 6page.tif
6page.tif[0] TIFF 595x842+0+0 DirectClass 16-bit 17.2Mi 0.000u 0m:0.000000s
6page.tif[1] TIFF 595x842+0+0 DirectClass 16-bit 17.2Mi 0.000u 0m:0.000000s
6page.tif[2] TIFF 595x842+0+0 DirectClass 16-bit 17.2Mi 0.000u 0m:0.000000s
6page.tif[3] TIFF 595x842+0+0 DirectClass 16-bit 17.2Mi 0.000u 0m:0.000000s
6page.tif[4] TIFF 595x842+0+0 DirectClass 16-bit 17.2Mi 0.000u 0m:0.000000s
6page.tif[5] TIFF 595x842+0+0 DirectClass 16-bit 17.2Mi 0.000u 0m:0.000000s

好的,6页,编号为0-5。

让我们将第 3 页提取为 PNG:

gm convert 6page.tif[3] JustPage3.png

让我们将提取的第 3 页附加到原始 tif 的末尾:

gm convert 6page.tif JustPage3.png BigBoy.tif

现在检查我们得到了什么 - 是的,7 页:

gm identify BigBoy.tif
BigBoy.tif[0] TIFF 595x842+0+0 DirectClass 16-bit 17.7Mi 0.000u 0m:0.000000s
BigBoy.tif[1] TIFF 595x842+0+0 DirectClass 16-bit 17.7Mi 0.000u 0m:0.000000s
BigBoy.tif[2] TIFF 595x842+0+0 DirectClass 16-bit 17.7Mi 0.000u 0m:0.000000s
BigBoy.tif[3] TIFF 595x842+0+0 DirectClass 16-bit 17.7Mi 0.000u 0m:0.000000s
BigBoy.tif[4] TIFF 595x842+0+0 DirectClass 16-bit 17.7Mi 0.000u 0m:0.000000s
BigBoy.tif[5] TIFF 595x842+0+0 DirectClass 16-bit 17.7Mi 0.000u 0m:0.000000s
BigBoy.tif[6] TIFF 595x842+0+0 PseudoClass 65536c 16-bit 17.7Mi 0.000u 0m:0.000000s

imagemagick 命令是 convert images.tiff image%02d.png

我不熟悉gm模块;我只会为此使用child_process

看看

这个npm模块 https://www.npmjs.com/package/gm

还有这个文档,特别是adJOIN函数的一部分

http://aheckmann.github.io/gm/docs.html

来自有关相邻函数的文档。

将图像合并到单个多图像文件中 默认情况下,图像序列的所有图像都存储在同一文件中。但是,某些格式(例如.JPEG)不支持为每个文件存储多个图像,并且除非将结果保存到单独的文件中,否则只会保存图像序列中的第一帧。使用 +adjoin 强制将多个帧保存到多个编号文件。如果使用 +adjoin,则输出文件名必须包含文件名的数字部分的 printf 样式格式规范。

最新更新