我是一個相對的新手,在C#中進行圖像處理。這是我在成爲會員很長時間後在這個董事會上的第一個問題。我希望它能幫助我解決這個棘手的情況。C#通用GDI +使用Image.Save時出錯()
我需要讀取多頁TIFF的內容(幀),將每一個保存到一個List中,最後返回它然後做一些工作。
繼承人到目前爲止我的代碼
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相同的,當我得到了seemedly衆所周知通用GDI實際工作就像一個魅力+錯誤。
有什麼明顯的我在這裏失蹤?如果沒有,是否還有其他更有效的方式來返回從多頁Tiff中提取的圖像列表?
我將不勝感激任何人都可以給的幫助。
XP有一箇舊版本的GDI +,v1.00。您已經在v1.10上測試過您的代碼,這是一個大大改進的版本。任何事情都是可能的,就像你忘記了byteStream.Position = 0;有一個影響。對於特定的TIFF,它是成千上萬不兼容文件格式的首字母縮寫。請大家幫忙,停止支持XP。 – 2015-02-05 22:47:02
@HansPassant我讀過關於GDI +版本的情況。我希望有人能夠指出一些明顯的錯誤。我很樂意停止支持XP,但不幸的是,在這種特殊情況下,我不是那種做出這種選擇的人。 我會測試包括你建議的線路。 – user3095888 2015-02-05 23:08:49
如果其他人可以提供一些進一步的見解,而不是簡單地告訴我(可能有成千上萬的人)停止支持XP - 我會非常感激! – user3095888 2015-02-08 17:04:27