2

我在一个处理照片的大型应用程序上工作。在某些情况下,应用程序可以创建超过 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。

4

1 回答 1

2

微软已经回答了这个问题:

“这似乎是 Windows 映像组件的资源限制 - WIC。WPF 只是转发由 IWICColorTransform_Initialize_Proxy 返回的错误代码(http://msdn.microsoft.com/en-us/library/windows/desktop/gg430025(v =VS.85).aspx )。”

问题出在 Microsoft Connect 上。

于 2013-09-10T11:14:16.667 回答