我有这样的代码
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并将其存储为byte的数组。在我测试它的两台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上,即使使用这些特定的内容也非常好。
答案 0 :(得分:1)
我知道winxp对png的支持有限。你无法加载在winxp上运行的.net 4.0中实际压缩的png(win 7上的标准)的图标文件,你会得到同样的例外。
答案 1 :(得分:1)
我建议您尝试LibTiff.Net。或者,您可以使用libtiff(C ++代码),但我怀疑LibTiff.Net将更容易从您的.Net代码调用。