3

コマンド ラインから GNUWin32 tiffcp.exe を使用して、いくつかの tiff イメージ ファイルを取得し、それらを 1 つの tiff イメージ ファイルにマージする Web アプリを構築しています。

私が行っていた方法は、ファイル リストをループしてファイル名の文字列を作成し、1 つの変数にマージすることでした。

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 コマンド ラインの制限を超え、マージが失敗します。

このプロセスはファイルをマージするだけなので、次に考えたのは、ファイル名を文字列に書き込む代わりに、一度に 1 つのファイルをマージすることでした。したがって、ループが最初に実行されるのは、次のタイプのコードです。

tiffcp.exe file1.tif results.tif

その結果、完璧な 476k の tif ファイルが作成されます。ただし、ループの次の繰り返しでは、2 番目のファイルと最初の「結果」tif ファイルの内容をマージする必要があります。だから私はこれを行います:

tiffcp.exe results.tif file2.tiff results.tif

結果は毎回空白の 1K tiff ファイルですか?

私が見つけることができるtiffcp.exeのすべての例はfile1.tif file2.tif results.tifと言いますが、結果ファイルを使用してそれ自体に書き戻すものはありませんか?

これを行う方法に関する提案はありますか?

4

3 に答える 3

2

tiffcp.exe への -a スイッチを試してください

私はPythonで似たようなことをしており、ファイル処理ループ内で次のコマンドを発行しています:tiffcpp.exe -a temp.tif output.tif

正常に動作します。

于 2011-12-19T18:32:56.353 に答える
1

ASP.NET プロジェクトの場合、 LibTiff.Net (無料、オープン ソース、BSD ライセンス) を試すことができます。libtiff ライブラリのそのポートには、ソース コード付きの tiffcp ユーティリティが含まれています。あなたのコードでそれを使用しようとするかもしれません。

免責事項: 私はライブラリの管理者の 1 人です。

于 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 に答える