libtiff.netを介してストリームからロードされたtiffにフィールド値はありません

StackOverflow https://stackoverflow.com/questions/4781948

質問

私のアプリケーションは、メモリストリームに保存されているTIFFファイルを処理する必要がありますが、libtiff.netは常に返されます null フィールド値の場合。

        MemoryStream ms = new MemoryStream();
        FileStream fs = new FileStream("testfile.tif", FileMode.Open);
        fs.CopyTo(ms);

        //It seems (memory) streams have to be opened in write mode, "r" always returns <null>
        Tiff tiff = Tiff.ClientOpen("someArbitraryName", "w", ms, new TiffStream());

        FieldValue[] imageHeight = tif.GetField(TiffTag.IMAGELENGTH);

読み取りのためにファイルを直接開く Tiff.Open 正常に動作します。

これはlibtiff.netライブラリのバグですか、それとも何かが足りませんか?

役に立ちましたか?

解決

ビットミラクルサポートチームは私にソリューションを提供してくれました:

Tiff.ClientOpen ストリームの現在の位置からデータを読み取ります。

    MemoryStream ms = new MemoryStream();
    FileStream fs = new FileStream("testfile.tif", FileMode.Open);
    fs.CopyTo(ms);

    ms.Position = 0;

    Tiff tiff = Tiff.ClientOpen("someArbitraryName", "r", ms, new TiffStream());

    FieldValue[] imageHeight = tif.GetField(TiffTag.IMAGELENGTH);

これにより、問題が修正されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top