2012-02-25 24 views
0

StripOffsets = 768というタグが付いた元の画像があります。画像を編集してファイルに書き戻すと、StripOffsetsタグを手作業で768の元の値に手動で設定しようとします以下の方法を使用して)。何らかの理由でLibTiff.Net 2.3ライブラリを使用しているときにStripOffsetsタグを同じにする方法を教えてください。

//Set the height for the page 
output.SetField(TiffTag.ROWSPERSTRIP, ttPage[i].Height); 

//Set the offset for the page 
output.SetField(TiffTag.STRIPOFFSETS, ttPage[i].StripOffset); 

最終結果はStripOffsets = 8なぜそれがStripOffsets私が望むように設定しませんでしょうか?また、私の「ページオフセット」には、AWare Systems AsTiffTagViewerに示されている副次的なメモがあります。私はそれが同じ問題と関係していると確信しています。どういうわけか私はティフを正しく保存していません。たぶん私は手動で "StripOffsets"タグを設定することはできませんし、それは自動設定ですか?以下の私の例を参照してください...

Results from AsTiffTagViewer http://oi42.tinypic.com/2nqe3nt.jpg

答えて

2

STRIPOFFSETSタグは、それがファイルに画像データを書き込む際に、ライブラリによって自動的に設定されています。

通常、このタグの値は何であるかは関係ありません(もちろん正しい数字でない限り)。

ただし、画像データは、ディレクトリ(ページ)ヘッダーの後に保存する必要があります。一部のアプリケーションでは、TIFFをそのように記述する必要があります。

このような場合、ラスタデータをファイルまたはストリームに書き込んで、ラスタデータの前にTIFFタグを書き込むメソッドの前に、CheckpointDirectoryメソッドを呼び出す必要があります。

CheckpointDirectoryは、タグデータと共にディレクトリデータを保存しますが、出力を閉じずに画像を作成し続けることができます。

あなたのコードは次のようになります。完全に働いた

using (Tiff tif = Tiff.Open("file.tif", "w")) 
{ 
... 
tif.SetField(..); 
... 
tif.SetField(..); 
tif.CheckpointDirectory(); 

... 
tif.WriteRawStrip(..); 
... 
} 
+0

Bobrovskyを、!本当にありがとう。 –

関連する問題