代码之家  ›  专栏  ›  技术社区  ›  Chris Roberts

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

  •  1
  • Chris Roberts  · 技术社区  · 15 年前

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

    这通常很好,但随着Firefox3.5的发布,我们看到了一些颜色问题。我相信这是因为Firefox3.5现在支持嵌入式ICC颜色配置文件,这是其他浏览器所不支持的。

    为了实现显示的一致性,我希望通过编程删除.NET代码中的任何ICC颜色配置文件。

    谢谢 -克里斯

    2 回复  |  直到 15 年前
        1
  •  1
  •   Chris Roberts    15 年前

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

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

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

        2
  •  0
  •   MusiGenesis    15 年前

    这种方法 也许

    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操作不会继承它们。