CSSのfilterプロパティを使って画像をグレースケールに変換する

2024-04-02

HTML/CSSで画像をグレースケールに変換する方法

方法1:CSSの filter プロパティを使用する

これは最も簡単な方法です。以下のコードを画像のスタイルシートに追加するだけです。

img {
  filter: grayscale(100%);
}

grayscale プロパティの値は、0%から100%までの数値で指定できます。0%は元のカラー画像、100%は完全なグレースケールになります。

方法2:SVGフィルターを使用する

SVGフィルターを使用して、より高度なグレースケール効果を作成することができます。以下のコードは、画像をグレースケールに変換するSVGフィルターの例です。

<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg">
  <filter id="grayscale">
    <feColorMatrix type="matrix" values="0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0"/>
  </filter>
</svg>

このコードをHTMLファイルに保存し、以下のコードを使用して画像に適用します。

<img src="image.jpg" style="filter: url(#grayscale);">

上記以外にも、JavaScriptを使用して画像をグレースケールに変換する方法もあります。ただし、この方法はより複雑なので、ここでは説明しません。

注意事項

  • filter プロパティは古いブラウザではサポートされていない場合があります。
  • SVGフィルターは、複雑な画像の場合、処理速度が遅くなる可能性があります。

HTML/CSSで画像をグレースケールに変換するには、いくつかの方法があります。どの方法を選択するかは、要件とブラウザのサポート状況によって異なります。




<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>画像をグレースケールに変換する</title>
</head>
<body>
  <img src="image.jpg" alt="画像">
  <style>
    img {
      filter: grayscale(100%);
    }
  </style>
</body>
</html>
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>画像をグレースケールに変換する</title>
</head>
<body>
  <svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg">
    <filter id="grayscale">
      <feColorMatrix type="matrix" values="0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0"/>
    </filter>
  </svg>
  <img src="image.jpg" style="filter: url(#grayscale);">
</body>
</html>

JavaScriptを使用して画像をグレースケールに変換する方法は、以下のサイトを参考にしてください。




画像をグレースケールに変換するその他の方法

JavaScriptを使用して、画像のピクセルデータを直接操作することで、グレースケールに変換することができます。

const img = document.querySelector('img');
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');

canvas.width = img.width;
canvas.height = img.height;

ctx.drawImage(img, 0, 0);

const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
const data = imageData.data;

for (let i = 0; i < data.length; i += 4) {
  const gray = (data[i] + data[i + 1] + data[i + 2]) / 3;
  data[i] = gray;
  data[i + 1] = gray;
  data[i + 2] = gray;
}

ctx.putImageData(imageData, 0, 0);

img.src = canvas.toDataURL();

このコードは、画像の各ピクセルの赤、緑、青の値を平均値で置き換えることで、グレースケールに変換します。

ライブラリ

画像処理用のライブラリを使用することで、より簡単に画像をグレースケールに変換することができます。

これらのライブラリは、コマンドラインツールやPythonなどのプログラミング言語から使用することができます。

オンラインで画像をグレースケールに変換できるツールもいくつかあります。

これらのツールは、ブラウザ上で簡単に操作できるので、初心者にもおすすめです。


image css grayscale


【HTML/CSS】flexboxを使わない!2つ以上のコンテンツを横並びにする方法

方法1: floatプロパティを使うこれは最も古い方法の一つです。 float: left; を各divに設定することで、左側に並べることができます。方法2: display: inline-blockを使うdisplay: inline-block; を各divに設定することで、インラインブロック要素として表示されます。 インラインブロック要素は、横並びに表示されるだけでなく、幅や高さなどの設定も可能です。...


【CSS超解説】複数行のテキストがはみ出ないようにする3つの方法とサンプルコード

要件このチュートリアルを完了するには、以下のものが必要です。基本的な HTML と CSS の知識テキストエディタ手順HTML でコンテンツを作成するまず、省略記号を使用するコンテンツを含む HTML を作成します。次の例では、div 要素内に複数の行のテキストが含まれています。...


text-align: center; を使って画像を中央に配置する

この方法のメリット:シンプルで分かりやすい幅広いブラウザで対応している画像の周りに余白が発生する縦方向に中央揃えしたい場合は別の方法が必要手順HTMLファイルに画像を挿入します。CSSファイルで、画像の親要素に text-align: center; を設定します。...


CSS display: inline vs inline-block の違いを徹底解説

inline要素をテキスト内の一部分として表示します。幅と高さは設定できません。上下のマージン/パディングは無視されます。他の要素と隣接して配置できます。例:結果:inline-block要素をテキスト内の一部分として表示しますが、ブロック要素のように幅と高さを設定できます。...


【保存版】これさえあれば大丈夫!HTML、CSS、テキストにおける「最大文字数設定」のテクニックまとめ

このチュートリアルでは、HTML、CSS、テキストにおいて「最大文字数設定」を行う方法について、分かりやすく解説します。対象となるのは、以下の3つのケースです。入力欄における最大入力文字数の設定テキストコンテンツにおける最大表示文字数の設定...


SQL SQL SQL SQL Amazon で見る



背景色で画像をグレーアウト!CSSのbackground-colorプロパティ

方法filter プロパティを使用して grayscale() 関数を指定することで、画像をグレースケールに変換できます。利点すべてのブラウザでサポートされているコードがシンプル欠点完全なグレースケール変換しかできないその他のフィルターと組み合わせて使用できない