Image.FromStream 七個多載,常用參數:useEmbeddedColorManagement (ICM) 與 validateImageData (驗證)。實測 8000×7000 TIFF (100MB+):
var sw = Stopwatch.StartNew();
FileStream fs = new FileStream(image, FileMode.Open, FileAccess.Read);
Image img = Image.FromStream(fs, true, true); // ICM=true, Validate=true
Console.WriteLine($"ICM:true Validate:true Ticks:{sw.ElapsedTicks}");
fs.Close();
// ... 分別測試四種組合 ...
// ICM:false Validate:true
// ICM:true Validate:false
// ICM:false Validate:false
Use ICM: True. Validate: True, ElapsedTicks: 51853544
Use ICM: False. Validate: True, ElapsedTicks: 52507953
Use ICM: True. Validate: False, ElapsedTicks: 6880
Use ICM: False. Validate: False, ElapsedTicks: 5187
Image.FromStream(stream, false, false) 關閉兩者,速度提升 10,000 倍。validateImageData 參數,讀圖慢被罵慘。Justin Rogers 曾寫 ImageFast 類繞過驗證。.NET 2.0 新增此參數才徹底解決。