ウェブサイトの画像にグレー効果を加える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 でホバー ドロップダウン メニューを実装する方法

推薦する

イントラネット侵入を実現するためのSSHポート転送

LAN 内のマシンは外部ネットワークにアクセスできますが、外部ネットワークは内部ネットワークにアクセ...

JavaScript の組み込み Date オブジェクトの詳細な説明

目次日付オブジェクト日付オブジェクトの作成新しい日付()日付を取得する()取得日()月を取得する()...

mysql 5.7.11 winx64.zip インストールと設定方法のグラフィックチュートリアル

MySql データベース システムをインストールして構成します。 1. ダウンロード http://...

MySql 8.0.11 のインストール プロセスと Navicat とのリンク時に発生する問題の概要

私のシステムとソフトウェアのバージョンは次のとおりです。システム環境: win7、64ビットMySQ...

ウェブページの読み込み速度を上げる6つのヒント

第二に、キーワードのランキングは、Webページの表示速度にも関係しています(参照:キーワードランキン...

VMware Workstation Pro でサーバー仮想マシンを構築する (グラフィック チュートリアル)

私が使用している VMware Workstation Pro のバージョンは次のとおりです。 1....

React で複数の setStates が何回呼び出されるのでしょうか?

目次1. 2 つの setState を何回呼び出すのですか? 2. 2 つの setState の...

JSはショッピングカート内の商品の合計金額の計算を実現します

JSはショッピングカート内の商品の合計金額を計算して参考とします。具体的な内容は以下のとおりです。質...

Windows10システムにMySQL 5.7.17をインストールする

オペレーティング システム win10 MySQL は、公式 Web サイトからダウンロードした 6...

node.jsのコアモジュールとは

目次グローバルオブジェクトグローバルオブジェクトとグローバル変数プロセスコンソール一般的なツールユー...

Docker コンテナ ソース コードのデプロイ httpd ストレージ ボリュームを使用して Web サイトをデプロイする (推奨)

目次Dockerコンテナのソースコードを使用してhttpdをデプロイし、ストレージボリュームを使用し...

MySQLにおける時刻日付型と文字列型の選択について

目次1. DATETIMEとTIMESTAMPの使用1. 類似点2. 相違点3. 選択2. varc...

透明な入力ボックスにアイコンを追加する HTML コード

最近、弁護士推薦のウェブサイトを作成していたのですが、検索ボックスに問題がありました。検索ボックス内...

Nginx で IP と IP 範囲をブロックする方法

前面に書かれたNginx は単なるリバース プロキシおよび負荷分散サーバーではなく、電流制限、キャッ...