【メモ】縮小表示した画像のレンダリングとimage-rendering:crisp-edgesの使用結果まとめ

  • URLをコピーしました!

以下の3ブラウザでの画像のレンダリング状態の調査と、image-rendering: crisp-edgesを使った場合のレンダリング具合のメモ。

  • Chrome 98(Edge 98も見た目おんなじでした)
  • Safari 15.2
  • IE11

様々なブラウザでの表示確認用に作ったページ

目次

Chrome×縮小表示画像×ドットバイドットディスプレイはボンヤリする

CSS等の力で画像をもとのサイズより小さくして表示した際、Chrome×デバイスピクセル比が1のディスプレイという条件下で、画像はいちじるしくボンヤリします。

★以下すべて、横750pxの画像をCSSにて横300pxで描画させているものです★

DPR:1.5の画像はスクショをPhotoshopで縮小しているため表示のイメージです…
猫ちゃんのご尊顔を拡大。Safariより、Chrome(DPR1)のほうが髭の色や眼のふちがボンヤリ。IE11はジャギー。

image-rendering:-webkit-optimize-contrast

拡縮時の画像のレンダリング調整用に、image-renderingというCSSプロパティがあります。

その中のcrisp-edges(ベンダープレフィックス -webkit-optimize-contrast)を使うと、ちょっとくっきりします。

※IE11では使えません。

参考:https://sho-log.com/chrome-image-blurred/

crisp-edgesブラウザ対応状況はこれ:https://caniuse.com/mdn-css_properties_image-rendering_crisp-edges

Safariでは -webkit-optimize-contrast は使わないほうがいいかも

Safariの場合、繊細な画像に -webkit-optimize-contrast を使うと、ディスプレイのデバイスピクセル比にかかわらず少々チリチリになります。

-webkit-optimize-contrast が適応されている状態。ひげがチリチリになってしまった。

Chromeでは レンダリングがやや不安定になる

Chromeの場合 -webkit-optimize-contrast を使うと、デバイスピクセル比が1のディスプレイの時にレンダリングが少々不安定になります。

(Chrome 97と98、Chrome Canaryにて 100 でも同様でした)

なぜか、下記の2パターンが、ロードのタイミングであるとか、最小化してから再表示したとか、拡大してから元のサイズに戻したとか、そういったタイミングによってかわります。どうして。

左はきれいだが、右はひげがチリチリになってしまっている。両方 -webkit-optimize-contrast なのにどうして。

どちらにせよ、もとよりはくっきりした仕上がりになるので、ジャギーに目をつぶれば、ちょっと良いのかもしれないですね。

とりあえずChromeのみに -webkit-optimize-contrast を使う?

Chromeのときの描画の不安定さが気になりますが、なんにせよSafariのときには-webkit-optimize-contrastが効かないほうが良さそうなので、Chromeだけに使うとすればこうなる!ということですね……。

/* chrome opera */
@media screen and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: .001dpcm) {
    body {
        image-rendering: -webkit-optimize-contrast;
    }
}

ブラウザ別CSSハックの参考:https://netamame.com/browser-css-hack/

おまけ デバイスピクセル比が大きいときのレンダリングは無事

-webkit-optimize-contrast を使っていないときの表示。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次
閉じる