1

私はそのようなコードを持っています

using (Image image = System.Drawing.Image.FromStream(sourceStream))
{
    Guid objGuid = image.FrameDimensionsList[0];
    FrameDimension objDimension = new FrameDimension(objGuid);
    int pageCount = image.GetFrameCount(objDimension);

    for (int i = 0; i < pageCount; i++)
    {
          image.SelectActiveFrame(objDimension, i);
          resultStream = new MemoryStream();
          image.Save(resultStream, ToSystemImageFormat(outputFormat));
          result.Add(resultStream.ToArray());
    }
}

目的-各TIFFのページをpngとして保存し、バイトの配列として保存します。テストした2台のWIN7コンピューターで正常に動作するという問題。しかし、私は1台のWinXPコンピュータを持っており、このコードは「パラメータが無効です」という例外で失敗します。TIFFドキュメントは常に同じです。誰かが問題がどこにあるか知っていますか?

ImageConverterを使用しようとしました:

ImageConverter imageConverter = new System.Drawing.ImageConverter();
using (Image image = (Image)imageConverter.ConvertFrom(sourceContent))
{
     Guid objGuid = image.FrameDimensionsList[0];
     FrameDimension objDimension = new FrameDimension(objGuid);
     int pageCount = image.GetFrameCount(objDimension);

     for (int i = 0; i < pageCount; i++)
     {
            image.SelectActiveFrame(objDimension, i);
            resultStream = new MemoryStream();
            image.Save(resultStream, ToSystemImageFormat(outputFormat));
            result.Add(resultStream.ToArray());
      }
}

しかし、同じ例外で失敗します。ありがとうございました

UPD#1:Image.FromStream()メソッドで失敗します。ほとんどのTIFFドキュメントは問題なく変換され、特定のドキュメントでは失敗することを忘れました。しかし、WIN7では、これらの特定のものでも非常に問題ありません。

4

2 に答える 2

1

LibTiff.Netを試すことをお勧めします。別の方法として、libtiff (C++ コード) を使用することもできますが、.Net コードから LibTiff.Net を呼び出す方が簡単だと思います。

于 2012-01-26T18:13:10.953 に答える
1

winxp は png のサポートが制限されていることを知っています。winxpで実行されている.net 4.0では、実際に圧縮されたpng(win 7の標準)であるアイコンファイルをロードできません。同じ例外が発生します。

于 2012-01-26T17:48:47.850 に答える