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 并将其存储为字节数组。在我测试过的两台 WIN7 电脑上,这个问题运行良好。但我有一台 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

我知道winxp对png的支持有限。您无法在运行在 winxp 上的 .net 4.0 中加载实际上是压缩的 png(win 7 上的标准)的图标文件,您会遇到同样的异常。

于 2012-01-26T17:48:47.850 回答
1

我建议尝试LibTiff.Net。或者,您可以使用 libtiff(C++ 代码),但我怀疑 LibTiff.Net 会更容易从您的 .Net 代码中调用。

于 2012-01-26T18:13:10.953 回答