我正在构建一个带有多个tiff图像文件的Web应用程序,并使用命令行中的GNUWin32 tiffcp.exe将它们合并为一个单独的tiff图像文件。
我这样做的方法是遍历文件列表并构建一串文件名以合并为一个单一变量。
strfileList =“c:folder \ folder \ folder \ aased98-def-wsdeff-434fsdsd-dvv.tif c:folder \ folder \ folder \ aased98-def-wsdeff-434fsdsd-axs.tif c:folder \ folder \文件夹\ aased98-DEF-wsdeff-434fsdsd-dxzs.tif“
然后我会写命令行:
tiffcp.exe strFileList results.tif
文件名是guids,因此路径相当长,我没有任何控制来缩短它们。因此,如果我有一堆这些文档(超过20个文件),则字符串变量的长度超出了windows命令行的限制,并且合并失败。
由于这个过程只是合并文件,我的下一个想法是不是将文件名写入字符串,而是一次合并一个文件。所以第一次循环运行以下类型的代码:
tiffcp.exe file1.tif results.tif
结果是一个完美的476k tif文件。但循环的下一次迭代需要合并第二个文件加上第一个“结果”tif文件的内容。所以我这样做:
tiffcp.exe results.tif file2.tiff results.tif
每次结果都是空白的1K tiff文件?
我可以找到tiffcp.exe的所有例子说file1.tif file2.tif results.tif,没有用结果文件写回自己?
有关如何执行此操作的任何建议吗?
答案 0 :(得分:2)
尝试-a切换到tiffcp.exe
我在Python中做了类似的事情,在我的文件处理循环中我发出命令: tiffcpp.exe -a temp.tif output.tif
工作正常。
答案 1 :(得分:1)
对于ASP.NET项目,您可能需要尝试LibTiff.Net(免费,开源,BSD许可)。 libtiff库的端口包含带源代码的tiffcp实用程序。您可以尝试在代码中使用它。
免责声明:我是图书馆的维护者之一。
答案 2 :(得分:0)
我相信你的问题是由于使用results.tif作为输出的输入引起的。如果你增加文件名(即results1.tif到results2.tif等),我相信它应该有效。
这是一种效率很低的方法(如果你有10个文件,tiff1会被复制9次)。既然您提到了libtiff,您可以查看libtiff cp的来源并检查是否值得嵌入它。