image-rendering:画像を拡大縮小するアルゴリズムを設定する

初期値 auto
適用対象 全ての要素
継承 する
アニメーション 離散値
対応ブラウザ caniuseで確認

image-renderingプロパティの説明

image-renderingは、ブラウザが画像を拡大または縮小して表示する祭のアルゴリズムを設定します。

画像は本来の大きさで表示された場合に最も鮮明に見えますが、画面の大きさやページのレイアウトによって画像の大きさが拡大縮小されることがあります。ユーザーが自分の操作で画面の表示サイズを変更することもあります。そのような場面で、ブラウザがどのようなアルゴリズムで画像を描画するべきか、開発者側で指定することができます。

image-renderingに指定できる値

auto
画像の拡大縮小に関するアルゴリズムはブラウザの選択に任せます。ユーザーが使用しているブラウザの種類やバージョンによって表示される画像の品質が変わる場合があります。
crisp-edges
画像のコントラストとエッジを保つアルゴリズムで拡大縮小されます。ピクセルアートやGIFのように、色数や色調が少ない画像に向いています。
pixelated
画像が拡大されると、最近傍(nearest neighbor)法により大きなピクセルで構成されたように表示されます。縮小する場合はautoと同じ効果になります。
smooth(β)
画像の輪郭をなめらかに見せるアルゴリズムで拡大縮小されます。これはバイリニア補完などの色調が円滑化されるアルゴリズムで、実写のような色数の多い画像に向いています。
high-quality(β)
smoothよりも高品質な描画を目指します。システムのリソースが制約されている場合は、優先的に品質削減の候補となります。

image-renderingの使い方とサンプル

image-renderingプロパティの構文は以下の通りです。

CSS
/* キーワード値 */
image-rendering: auto;
image-rendering: crisp-edges;
image-rendering: pixelated;

/* グローバル値 */
image-rendering: inherit;
image-rendering: initial;
image-rendering: revert;
image-rendering: unset;

image-renderingの実例

それでは実際にimage-renderingプロパティの書き方を見ていきましょう。以下の例は、50pxのアイコンが親要素の寸法に合わせて拡大された時に、アルゴリズムの違いによって見栄えに変化が起こるのを示すものです。

表示確認
CSS
.samp_box {
	overflow: auto;
	padding: 1rem;
	background: #eee;
	display: grid;
	grid-template: 1fr / 1fr 1fr 1fr;
}
.samp_box > div {
	padding: .5rem;
	background: #fff;
}
.samp_box h2 {
	margin: 1rem 0 0;
	font-size: 1rem;
}
.samp_box img {
	width: 100%;
	height: auto;
}
.ir_auto img {
	image-rendering: auto;
}
.ir_ce img {
	image-rendering: crisp-edges;
}
.ir_pix img {
	image-rendering: pixelated;
}
HTML
<div class="samp_box">
	<div class="ir_auto">
		<h2>auto</h2>
		<img src="../images/sample_icon50.gif">
	</div>
	<div class="ir_ce">
		<h2>crisp-edges</h2>
		<img src="../images/sample_icon50.gif">
	</div>
	<div class="ir_pix">
		<h2>pixelated</h2>
		<img src="../images/sample_icon50.gif">
	</div>
</div>

image-renderingに関連するCSSプロパティ

要素の表示や配置方法
bottom 位置指定で配置された要素の底辺からの距離を指定する
break-after ボックスの終了時にページやカラムをどのように区切るかを指定する
break-before ボックスの開始前にページやカラムをどのように区切るかを指定する
break-inside ボックスの途中でページやカラムをどのように区切るかを指定する
clear フロート(float)の回り込みを解除する
clip 要素を切り抜いて可視化する範囲を指定する
box-decoration-break 要素の断片が複数の行やページに渡る場合に装飾の表示の仕方を指定する
display 要素の表示形式を指定する
float 要素を右または左へ寄せて配置する
image-orientation 横向きや逆さまに撮影された写真を正しい向きに回転させる
image-rendering 画像を拡大縮小するアルゴリズムを設定する
left 位置指定で配置された要素の左辺からの距離を指定する
object-fit 画像や動画などの置換要素をボックスに収める方法を指定する
object-position ボックスの中に配置されるオブジェクトの位置を指定する
overflow 要素からはみ出した内容の表示方法をまとめて指定する
overflow-wrap インライン要素に対して溢れる単語の折り返し方法を指定する
overflow-x 要素から水平方向にはみ出す内容の表示方法を指定する
overflow-y 要素から垂直方向にはみ出す内容の表示方法を指定する
position 要素の位置指定の種類を変更する
right 位置指定で配置された要素の右辺からの距離を指定する
vertical-align インライン要素や表のセルに対して縦方向の揃える位置を指定する
visibility 要素の領域を残したまま表示・非表示を切り替える
z-index 要素の重なり順序を指定する