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

推薦する

HTML テーブルタグチュートリアル (17): テーブルタイトルの垂直配置属性 VALIGN

表のキャプションは表の上または下に配置でき、プロパティで調整できます。デフォルトのテーブル タイトル...

dockerにmysqlをインストールした後にNavicatが接続できない問題に対する完璧な解決策

1. Dockerがイメージをプルするdocker pull mysql (デフォルトで最新バージョ...

Ember.js と Vue.js の詳細な比較

目次概要フレームワークを選択する理由は何ですか? js のエンバーEmber.js と Vue.js...

Reactは二次連結(左右連結)を実現する

この記事では、二次リンクを実現するためのReactの具体的なコードを参考までに共有します。具体的な内...

div要素に丸い境界線を追加する方法

以下のように表示されます。 CSSコードコンテンツをクリップボードにコピー分割{境界線: 2px 固...

開発者がデータベースロックを詳細に理解する必要がある理由

1.ロックしますか? 1.1 ロックとは何ですか?ロックの本当の意味は、鍵またはコードで開くことがで...

トップナビゲーションバーメニューを作成するためのHTML+CSS

ナビゲーションバーの作成:技術要件: CS HTMLタグ達成目的:ナビゲーションバーメニューの作成コ...

MySQL フラッシュリストとダーティページフラッシュメカニズム

1. レビューMySQL の起動後にバッファ プールが初期化されます。バッファ プールは N 個の空...

VMware仮想マシンにLinux(CentOS)をインストールするための詳細な構成手順

CentOS7をダウンロード私がダウンロードしたイメージはCentOS-7-x86_64-DVD-1...

JavaScript 配列と非配列オブジェクトのディープ クローンとシャロー クローンの原則の詳細な説明

目次シャロークローニングとディープクローニングとは何ですか? 1. アレイのクローンを作成する1.1...

Linux での透過的巨大ページの使用と無効化の概要

導入コンピューティングのニーズが拡大し続けるにつれて、アプリケーションのメモリに対する需要も増加して...

CSSの高さの崩壊問題についての簡単な説明

パフォーマンス例えば: HTML: <div class="first"&...

フロントエンド開発者は毎日HTMLタグの理解を学ばなければならない(1)

2.1 セマンティクス化により、Webページが検索エンジンに理解されやすくなりますこの章では、We...

Centos7 で Java8 と MySQL をインストールしてデプロイする

通常、Java の学習とプロジェクトのデプロイはローカルで行われますが、実稼働環境は Linux 環...