如何使用.NET从图像中删除颜色(颜色)配置文件信息?

时间:2009-09-25 12:32:43

标签: .net firefox graphics gdi+ icc

我有一个工具,可以在运行时处理图像,作为我的网络应用程序的一部分。

这通常可以正常工作,但随着Firefox 3.5的发布,我们看到了一些颜色问题。我相信这是因为Firefox 3.5现在支持其他浏览器没有的嵌入式ICC颜色配置文件。

为了实现显示的一致性,我想以编程方式删除.NET代码中的任何ICC颜色配置文件。

有人能指出我正确的方向吗?

谢谢, - 克里斯

2 个答案:

答案 0 :(得分:1)

在进一步调查中,似乎IE正在注意一些Gamma校正信息,而FireFox 3.5正在注意嵌入式ICC颜色配置文件。

默认情况下,所有这些信息似乎都是由.NET框架的PNG实现添加的。

可以在.NET中删除此信息 - 我blogged about it here

答案 1 :(得分:0)

这个方法可能有效(我还没有测试过),虽然它可能有点过分:

public void StripBitmap(string path)
{
    Bitmap originalBitmap = (Bitmap)Bitmap.FromFile(path);
    Bitmap strippedBitmap = 
        new Bitmap(originalBitmap.Width, originalBitmap.Height);
    using (Graphics g = Graphics.FromImage(strippedBitmap))
    {
        g.DrawImage(originalBitmap, 0, 0);
    }
    System.Drawing.Imaging.ImageFormat fmt = originalBitmap.RawFormat;
    originalBitmap.Dispose();
    System.IO.File.Delete(path);
    strippedBitmap.Save(path, fmt);
    strippedBitmap.Dispose();
}

GDI +中的Bitmap类似乎不支持颜色配置文件,但如果支持颜色配置文件,我认为它们不会被上面示例中的DrawImage操作所占用。