【发布时间】:2015-04-05 23:34:52
【问题描述】:
我是 C# 成像的相对新手。这是我作为会员很长时间后在这个董事会上提出的第一个问题。我希望它能帮助我度过这个棘手的场景。
我需要读取多页 TIFF 的内容(帧),将每个内容保存到列表中,最后将其返回以进行处理。
这是我目前的代码
public static List<Image> GetAllPages(string file)
{
images = new List<Image>();
using (Image img = Image.FromFile(file))
{
try
{
for (int i = 0; i < img.GetFrameCount(FrameDimension.Page); i++)
{
img.SelectActiveFrame(FrameDimension.Page, i);
MemoryStream byteStream = new MemoryStream();
img.Save(byteStream, ImageFormat.Tiff);
images.Add(Image.FromStream(byteStream));
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
return images;
}
重要 - 在 Windows 7 上执行时,这实际上就像一个魅力。但是,在 Windows XP 上尝试同样的操作时,我得到了似乎众所周知的通用 GDI+ 错误。
我在这里有什么明显的遗漏吗?如果没有,是否有任何其他更有效的方法来返回从多页 tiff 中提取的图像列表?
任何人都可以提供任何帮助,我将不胜感激。
【问题讨论】:
-
XP 有一个旧版本的 GDI+,v1.00。您已经在 v1.10 上测试了您的代码,这是一个大大改进的版本。一切皆有可能,就像您忘记了 byteStream.Position = 0;有影响。对于特定的 TIFF,它是数千种不兼容文件格式的首字母缩写词。帮我们大家一个忙,停止支持 XP。
-
@HansPassant 我确实阅读了有关 GDI+ 版本方案的信息。我希望有人能够指出一些明显的错误。我很想停止支持 XP,但不幸的是,在这种特殊情况下,我不是做出这种选择的人。我会测试包括你建议的线路。
-
如果有其他人可以对此提供进一步的见解,而不是简单地告诉我(可能还有成千上万的人)停止支持 XP - 我将非常感激!
-
@user3095888 检查您在保存文件的目录中是否有足够的用户权限,例如:如果在 c:\ 驱动器中,您将需要管理员权限。尝试使用相同的代码保存到另一个驱动器
标签: c# windows windows-xp gdi+ tiff