3

我正在构建一个 Web 应用程序,它需要几个 tiff 图像文件,并使用命令行中的 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\folder\aased98 -def-wsdeff-434fsdsd-dxzs.tif"

然后我就写到命令行:

tiffcp.exe strFileList results.tif

文件名是 guid,因此路径相当长,我无法控制它们来缩短它们。因此,如果我有一堆这些文档(超过 20 个文件左右),字符串变量的长度超过了 windows 命令行的限制,并且合并失败。

由于这个过程只是合并文件,我的下一个想法是不要将文件名写入字符串,而是一次合并一个文件。所以第一次循环运行以下类型的代码:

tiffcp.exe 文件 1.tif 结果.tif

结果是一个完美的 476k tif 文件。但循环的下一次迭代需要合并第二个文件加上第一个“结果”tif 文件的内容。所以我这样做:

tiffcp.exe 结果.tif 文件 2.tiff 结果.tif

每次结果都是一个空白的 1K tiff 文件?

我能找到的所有 tiffcp.exe 示例都说 file1.tif file2.tif results.tif,没有一个使用结果文件写回自身?

关于如何做到这一点的任何建议?

4

3 回答 3

2

尝试将 -a 切换到 tiffcp.exe

我在 Python 中做类似的事情,在我的文件处理循环中我发出命令: tiffcpp.exe -a temp.tif output.tif

工作正常。

于 2011-12-19T18:32:56.353 回答
1

对于 ASP.NET 项目,您可能想尝试LibTiff.Net(免费、开源、BSD 许可证)。libtiff 库的该端口包含带有源代码的 tiffcp 实用程序。您可以尝试在您的代码中使用它。

免责声明:我是图书馆的维护者之一。

于 2010-10-01T16:27:10.497 回答
0

我相信您的问题是由于使用 results.tif 作为输入和输出引起的。如果您增加文件名(即 results1.tif 到 results2.tif 等),我相信它应该可以工作。

这是一种相当低效的方法(如果您有 10 个文件,则 tiff1 被复制 9 次)。既然你提到了libtiff,你可以看看libtiff cp的来源,看看是否值得嵌入。

于 2010-09-22T15:34:36.237 回答