ウェブサイトの画像にグレー効果を加える3つの方法

ウェブサイトの画像にグレー効果を加える3つの方法
私はグレースケールの画像の方が芸術的に見えると思うので、いつもグレースケールの画像を好んで使っています。 Photoshop などの多くの画像エディタでは、カラー画像を簡単にグレースケールに変換できます。色の深度や色相を調整するオプションもあります。残念ながら、ブラウザの違いにより、この効果を Web 上で実現するのは簡単ではありません。
1. CSSフィルター
CSS フィルター プロパティを使用するのが、おそらく画像をグレースケールに変換する最も簡単な方法です。歴史的に、Internet Explorer には、グレースケールなどのカスタム効果を適用するための、filter と呼ばれる独自の CSS プロパティがありました。
現在、フィルター プロパティは CSS3 仕様の一部であり、Firefox、Chrome、Safari などの一部のブラウザーでサポートされています。以前、画像をグレーにするだけでなく、セピアやぼかし効果にもできる Webkit フィルターについても説明しました。
次のCSSスタイルを追加すると、画像が灰色になります

コードをコピー
コードは次のとおりです。

画像 {
-webkit-filter: grayscale(1); /* Webkit */
フィルター: グレー; /* IE6-9 */
フィルター: グレースケール(1); /* W3C */
}

IE6-9 および Webkit ブラウザ (Chrome 18+、Safari 6.0+、Opera 15+) をサポート
(注: このコードは Firefox には影響しません。)
2. ジャバスクリプト
2 番目の方法は、JavaScript を使用することです。技術的には、IE6 以下も含め、JavaScript をサポートするすべてのブラウザは JavaScript をサポートしているはずです。

コードをコピー
コードは次のとおりです。

var imgObj = document.getElementById('js-image');
関数gray(imgObj) {
var キャンバス = document.createElement('キャンバス');
var キャンバスコンテキスト = キャンバス.getContext('2d');
var imgW = imgObj.width;
var imgH = imgObj.height;
キャンバスの幅 = imgW;
キャンバスの高さ = imgH;
キャンバスコンテキストで画像を描画します。
var imgPixels = canvasContext.getImageData(0, 0, imgW, imgH);
for(var y = 0; y < imgPixels.height; y++){
for(var x = 0; x < imgPixels.width; x++){
var i = (y * 4) * imgPixels.width + x * 4;
var avg = (imgPixels.data[i] + imgPixels.data[i + 1] + imgPixels.data[i + 2]) / 3;
imgPixels.data[i] = 平均;
imgPixels.data[i + 1] = 平均;
imgPixels.data[i + 2] = 平均;
}
}
canvasContext.putImageData(imgPixels, 0, 0, 0, 0, imgPixels.width, imgPixels.height);
canvas.toDataURL() を返します。
}
imgObj.src = グレー(imgObj);

3. テキスト
3番目の方法はSVGフィルターを使う方法です。SVGファイルを作成し、次のコードを記述して***.svgとして保存する必要があります。

コードをコピー
コードは次のとおりです。

<svg xmlns="http://www.w3.org/2000/svg">
<フィルター id="グレースケール">
<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"/>
</フィルター>
</svg>

次に、フィルタープロパティを使用して、SVGファイル内の要素のIDでSVGファイルに接続できます。

コードをコピー
コードは次のとおりです。

画像 {
フィルター: url('img/gray.svg#grayscale');
}

CSS ファイルに配置することもできます。例:

コードをコピー
コードは次のとおりです。

画像 {
フィルター: url('url("data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'><filter%20id='grayscale'><feColorMatrix%20type='matrix'%20values='0.3333%200.3333%200.3333%200.3333%200%200.3333%200.3333%200.3333%200%200%200%200%200%201%200'/></filter></svg>#grayscale");')
}

要約すると、ブラウザー間でグレースケール効果をサポートするには、上記の方法を次のコード スニペットと組み合わせて使用​​できます。このコードはFirefox 3.5以降、Opera 15以降、Safari、Chrome、IEをサポートします。

コードをコピー
コードは次のとおりです。

画像 {
-webkit-フィルター: グレースケール(100%);
-webkit-フィルター: グレースケール(1);
フィルター: グレースケール(100%)
フィルター: url('../img/gray.svg#grayscale');
フィルター: グレー;
}

上記のコードを JavaScript アプローチで活用し、JavaScript が無効になっている場合のフォールバックとして CSS フィルターを提供することもできます。このアイデアは、Modernizr の助けを借りて簡単に実装できます。

コードをコピー
コードは次のとおりです。

.no-js画像{
-webkit-フィルター: グレースケール(100%);
-webkit-フィルター: グレースケール(1);
フィルター: グレースケール(100%)
フィルター: url('../img/gray.svg#grayscale');
フィルター: グレー;
}

OK、ブラウザでクールな効果を確認できます。 !

<<:  HTML テキストフォーマットの簡単な例 (詳細な説明)

>>:  CSS でホバー ドロップダウン メニューを実装する方法

推薦する

LinuxでifconfigとaddrがIPアドレスを表示できない問題を解決する

1. 仮想マシンにLinuxシステムをインストールし、仮想マシンを起動し、rootとパスワードを入力...

Linux システムでデプロイメント プロジェクトを設定する方法

1. ファイアウォールの設定を変更し、対応するポートを開きますLinux システムのファイアウォール...

HTML 順序なしリスト 箇条書き 画像を使用した CSS の記述

少なくとも 5 冊のベストセラー書籍の順序なしリストを含む HTML ページを作成します。各書籍の前...

JS オブジェクトのコピー (ディープ コピーとシャロー コピー)

目次1. 浅いコピー1. Object.assign(ターゲット、ソース、ソース...) 2. スプ...

MySQLの共同クエリ最適化メカニズムの詳細な説明

目次MySQL フェデレーテッド クエリ実行戦略。実行計画フェデレーテッドクエリオプティマイザーMy...

nginx 用の zabbix 5.0 をインストールして展開する方法

目次実験環境インストールと展開データベースをインストールして設定します (ここでは mariadb ...

Vue から React への変換入門ガイド

目次デザインコンポーネント通信ライフサイクルイベント処理品格とスタイルクラススタイル条件付きレンダリ...

HTML ページに SVG を挿入する複数の方法

SVG (Scalable Vector Graphics)は、XML 構文に基づいた画像形式です。...

MySQL タイムブラインドインジェクションの 5 つの遅延方法

MySQL タイム ブラインド インジェクションの 5 つの遅延方法 (PWNHUB の予期しない解...

Linux (CentOS) システムで MySQL データベース ディレクトリの場所を変更する方法

CentOS システムで MySQL データベース ディレクトリの場所を変更する方法1. まず、My...

Windows オペレーティング システムでポートの使用状況を照会およびクリアするプログラム

Windowsオペレーティングシステムでは、ポートの占有状況を照会し、ポートの占有状況をクリアするプ...

Windows Server 2008 R2 リモート デスクトップのポート 3389 を変更する方法

Windows サーバー リモート デスクトップのデフォルトのポート番号は 3389 です。職場でサ...

HTML ページ出力で従うべきいくつかの原則の要約

1. DOCTYPE は必須です。ブラウザは宣言した DOCTYPE に基づいてページのレンダリング...

Vueはシンプルなショッピングカートの例を実装します

この記事では、参考までに、Vue の具体的なコードを共有して、簡単なショッピングカートを実装します。...

よくあるNginxの設定ミスの例

目次ルートの場所が見つかりませんオフバイスラッシュ安全でない変数の使用スクリプト名$uri を使用す...