IEの「名前を付けて画像を保存」がうまく動かない
昨日作った数式画像生成サイト(http://exp.frozenlib.net/)に「画像かHTMLをコピーして使ってね」と書いたにもかかわらず、IEで「名前を付けて画像を保存」を行うと画像が壊れてしまっていた。
調べてみたところ、
- HTTPレスポンスヘッダにVary:*が含まれている
- 透過PNG画像を保存しようとした
の2つの条件が重なると起こるようだ。
原因はこうだ。
- ASP.NETのOutputCacheを使用
- すると、キャッシュを使用したページのHTTPレスポンスヘッダにVary:*が含まれるようになる
- すると、IE7やIE6では画像の種類とサイズが「利用不能」と表示される
- さらに、そのような画像に対して「名前を付けて画像を保存」を行うと、bitmap形式でしか保存できなくなっている
- ここで、もし、保存する画像が透過PNGだったとすると、透明度情報が失われてしまう。
とりあえず、不透明な画像を出力することで解決したが、できれば、OutputCacheを使いつつ、Vary:*が出力されないようにしたい。
が・・・なかなか上手くいかない。