我有一个工具,可以在运行时处理图像,作为我的网络应用程序的一部分。
这通常可以正常工作,但随着Firefox 3.5的发布,我们看到了一些颜色问题。我相信这是因为Firefox 3.5现在支持其他浏览器没有的嵌入式ICC颜色配置文件。
为了实现显示的一致性,我想以编程方式删除.NET代码中的任何ICC颜色配置文件。
有人能指出我正确的方向吗?
谢谢, - 克里斯
答案 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操作所占用。