2017-02-01 75 views
0

我必须将multipple tiff转换为单独的png文件。对于isntance,我有一个tiff文件,它有一个3页,我想将其转换为3个单独的png's.在下面的代码中,我只能转换第一页的tiff文件到PNG。如何使用gmmagick将多个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到三页的tiiff并获得一个四页的tiff文件吗?

+0

你的问题不是很清楚。你的意思是你有'file1.tif'和'file2.tif'和'file3.tif'?或者你的意思是你有'file.tif',它包含三页? –

+0

对不起,如果我didi不写清楚。我的意思是我有file1.tiff有1页,并有file2.tiff有3页page.so最终结果我想有一个4页tiff文件。但我不想创建一个新文件,只需将tiff单页添加到有3页的tiff中即可。换句话说,我想用file2.tiff附加file1.tiff,结果得到一个4页的tiff文件。 –

回答

0

你的问题还不太清楚,所以我会告诉你一些例子,你可以提取你需要的位。

比方说,我们从一个名为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 
+0

哦谢谢你!但我怎么可以用节点js代码而不是cmd命令来实现这个功能?我的意思是说,我想通过节点js执行所有这些操作,而不是通过cmd执行?是否有可能?对不起,我只是在节点中使用newbee,有时候我可以给明显的问题 –

0

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

我不熟悉gm模块;我只是用child_process这个。

0

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

而且这个文件特别是毗功能

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

大约从毗函数文档的一部分。

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

+0

我会去看看。 –

相关问题