1

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

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

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

谁能指出我正确的方向?

谢谢, - 克里斯

4

2 回答 2

1

经过进一步调查,IE 似乎注意到了一些 Gamma 校正信息,而 FireFox 3.5 注意到了嵌入的 ICC 颜色配置文件。

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

可以在 .NET 中删除此信息 - 我已在此处发表博客

于 2009-10-11T14:40:38.017 回答
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 操作继承。

于 2009-09-25T12:50:58.513 回答