我在一个处理照片的大型应用程序上工作。在某些情况下,应用程序可以创建超过 500 个 ColorConvertedBitmap 类的实例。不幸的是,它在尝试创建 501、502、... 实例时总是失败。我收到 FileFormatException 消息“位图颜色上下文无效”。但是,我对所有实例使用相同的源颜色上下文和目标颜色上下文,并且前 500 个实例不会失败。是错误还是 .NET Framework\OS 的颜色管理子系统存在一些资源限制?
[编辑] 以下代码片段在我的计算机上重现了该问题:
var files = Directory.GetFiles(folderBrowserDialog.SelectedPath, "*.*", SearchOption.TopDirectoryOnly);
ColorContext sourceColorContext = new ColorContext(new Uri(@"d:\!work\ICC\AdobeRGB1998.icc"));
ColorContext destinationColorContext = new ColorContext(new Uri(@"d:\!work\ICC\sRGB Color Space Profile.icm"));
foreach (var file in files)
{
BitmapImage image = new BitmapImage(new Uri(file));
ColorConvertedBitmap coloredBitmap = new ColorConvertedBitmap(image, sourceColorContext, destinationColorContext, image.Format);
this.bitmaps.Add(coloredBitmap);
}
PS我使用的是Windows 8。