3

http://bitmiracle.com/libtiff/help/add-custom-tiff-tags-to-an-のサンプルに示すように、既存の TIFF 画像のいくつかのカスタム ASCII タグの値を変更しようとしています。既存の tiff-image.aspx

変更には基本的に、既存のタグの文字列への追加、または存在しなかったカスタム タグの追加が含まれます。

ただし、新しいタグを追加すると、LibTiff は既存のディレクトリを変更するのではなく、画像の最後にまったく新しいディレクトリを追加するように見えます。これを WinHex で検証し、WriteDirectory、CheckpointDirectory などのいくつかの異なるアプローチも試しました。ファイルは追加のために開かれています。

重複したディレクトリは、画像を処理しなければならない別のプログラムで問題を引き起こします。

既存のディレクトリを更新する方法はありますか? または、ファイル全体を書き直す必要がある場合は、その方法を教えてください。ファイルが書き換えられた場合、保持する必要がある他のカスタム タグがあります。

4

2 に答える 2

1

既存のディレクトリに新しいタグを追加するか、既存のタグを変更する場合は、既存のディレクトリを新しいディレクトリに置き換えることをお勧めします。そうしないと、タグによってラスター データが上書きされる可能性があります (更新されたディレクトリは古いディレクトリよりも多くのスペースを必要とするため)。

したがって、ディレクトリ チェーンが更新されたファイルをプログラムが適切に処理できない場合、ファイル全体を書き換える必要があると考えるのは正しいことです。

ライブラリに付属の TiffCP ユーティリティのソース コードを参照してください。ソースコードは、開始するための十分な手がかりを提供するはずです。ユーティリティはファイル内のデータを再圧縮しますが、おそらくそれを行う必要はありません。ReadRawStripandWriteRawStripメソッドを使用して圧縮データをコピーするだけです。このユーティリティは、すべてのタグもコピーします。これは、コードで必ず行う必要があることです (同時にタグを変更/追加する)。

于 2013-02-17T12:29:55.637 に答える
0

According to libbit.net documentation: Tiff.Open Method

only "r" "w" "a" mode is supported, plus some minor mode, there's no "r+" as in fopen to support both read and write to tiff.

The native libtiff library has a utility which can be used to change specified tiff tag:

tiffset -s XResolution 400 test.tif

tiffinfo test.tif can be used to verify the result.

于 2016-10-20T01:31:27.030 に答える