1

NETライブラリはmultitiffのページ数を取得します。http://bitmiracle.com/libtiff/help/retrieve-number-of-pages-in-tiff-image.aspxのサンプルを使用しています 。

    public int GetNumberOfPages(Tiff image)
    {
        int pageCount = 0;
        do
        {
            ++pageCount;
        } while (image.ReadDirectory());

        return pageCount;
    }

    [TestMethod]
    public void GetNumberOfPages()
    {
        using (Tiff tiffFromFile = Tiff.Open(@"test.tif", "r"))
        {
            int numberOfPages = GetNumberOfPages(tiffFromFile);
        }

    }

例外が発生します: 閉じたTextWriterに書き込めません。

スタックトレース:

at System.IO.__Error.WriterClosed()
   at System.IO.StringWriter.Write(String value)
   at Microsoft.VisualStudio.TestTools.TestTypes.Unit.ThreadSafeStringWriter.Write(String value)
   at System.IO.TextWriter.Write(String format, Object arg0)
   at System.IO.TextWriter.SyncTextWriter.Write(String format, Object arg0)
   at BitMiracle.LibTiff.Classic.TiffErrorHandler.WarningHandler(Tiff tif, String method, String format, Object[] args)
   at BitMiracle.LibTiff.Classic.Tiff.WarningExt(Tiff tif, Object clientData, String method, String format, Object[] args)
   at BitMiracle.LibTiff.Classic.Tiff.ReadDirectory()

コードはサンプルと同じです。この問題の原因が見つかりません。

4

1 に答える 1

2

この問題は、サポートされていない画像タイプまたは渡すtiffファイルのエラーに関連している可能性があります。エラーに応答したい場合は、LibTiffドキュメントでカスタムハンドラーの追加について説明しています。以前にそのライブラリを使用したことがないので、何が起こったのかはっきりとは言えません。Openでエラーが発生した可能性がありますが、ハンドラーがないとエラーが発生しました。次に、ファイルを試行するとReadDirectory、ファイルはすでに閉じられています。これは単なる推測です。エラーハンドラを追加して、何が起こっているかを確認することをお勧めします。

http://bitmiracle.com/libtiff/help/tiff.seterrorhandler.aspx

編集:

サンプルページを振り返りました。実際には、ページ数を読み取る2つの方法があります。同じように失敗するかどうかを確認するためのより簡単な方法を試しましたか? To calculate number of pages in a TIFF image the Tiff.NumberOfDirectories() method or a simple loop that traverses directories can be used. This sample shows both methods.

あなたはあなたの方法をこれに変えることができるはずです:

public short GetNumberOfPages(Tiff image)
{
    return image.NumberOfDirectories()
}

それでも問題が解決しない場合は、画像の問題を除外できるように、有効で複数のページがあることがわかっている別の画像を試してください。

于 2012-08-21T13:14:46.573 に答える