別記事で解説した通り、Internet Explorerは画像のカラーマネジメント表示に対応していないか、対応していてもモニタのカラースペースをsRGBに決め打ちして変換する問題があるため、画像を適切なカラーで表示する事ができません。しかし、一切策がないというわけでもありません。

今回はsRGBの画像をIEで表示する場合に使える(かもしれない)おまじないを紹介します。

ICMFilterによるカラー変換

Internet Explorerでは以前よりDirectXフィルタによる効果の適用がCSSから可能でした。これらのうち、ICMFilterは任意のプロファイルを使用してモニタのカラースペースに変換する効果を提供します。

.srgb-image
{
    filter:progid:DXImageTransform.Microsoft.ICMFilter(colorSpace = sRGB );
}

上記の例ではsrgb-imageクラスの要素をsRGBと見なし、モニタのカラースペースに変換することになります。

colorSpaceの値には任意のICCプロファイルを指定することができますが、「ブラウザを立ち上げている側のPCに存在するプロファイルで、かつフルパスが分かっていること」が条件になりますので、サーバー側にプロファイルをアップロードしておいてそれを使うということはできません。ただし、例のとおりsRGBの場合は実ファイルを指定しなくても単にsRGBと書いておけばよいので問題ありません。

問題点

  • 背景が透過する画像に適用すると透過部分が黒くなります。
  • DirectXフィルタはIE9でdeprecated扱いになっており、IE10の標準モードおよび互換モードでは使用できないとされています(詳細)。