HTML5コンポーネントCanvasで画像のグレースケールを実現
HTML5 はとても魔法のようです。プログラムは Google ブラウザーでのテストに合格しました。興味のある方は、この記事で説明した HTML5 コンポーネント Canvas を使用して画像のグレースケールを実装する具体的な手順を参照してください。
新しい HTML ページを作成する。それを body タグに追加します。
の間に次のコードを追加します。
<canvas id="myCanvas" >Gray Filter</canvas>
最も単純な JavaScript スクリプト
を追加します。コードは次のとおりです。
<pre name="code" class="javascript">window.onload = function() { var canvas = document.getElementById("myCanvas"); <span style="white-space:pre"> </span>// TODO: do something here }
Canvas オブジェクトから描画オブジェクトのコンテキストを取得するコードは次のとおりです。
コードは次のとおりです。
var context = canvas.getContext("2d");
画像の HTML コードは次のとおりです。
コードは次のとおりです。
<img id="imageSource" src="hanjiaren.jpg" alt="Canvas Source" />
JavaScript コードHTML img オブジェクトから画像オブジェクトを取得する方法は次のとおりです:
コードは次のとおりです:
var image = document.getElementById("imageSource");
取得した画像を Canvas オブジェクトに描画するコードは次のとおりです。
コードは次のとおりです。
context.drawImage(image, 0, 0);
画像のピクセル データを取得するコードCanvas オブジェクトは次のとおりです:
コードは次のとおりです:
var canvasData = context.getImageData(0, 0, canvas.width, canvas.height);
ピクセル値を読み取り、グレースケールを実装します 度数計算のコードは次のとおりです:
コードは次のとおりです:
for ( var x = 0; x < canvasData.width; x++) { for ( var y = 0; y < canvasData.height; y++) { // Index of the pixel in the array var idx = (x + y * canvasData.width) * 4; var r = canvasData.data[idx + 0]; var g = canvasData.data[idx + 1]; var b = canvasData.data[idx + 2]; // calculate gray scale value var gray = .299 * r + .587 * g + .114 * b; // assign gray scale value canvasData.data[idx + 0] = gray; // Red channel canvasData.data[idx + 1] = gray; // Green channel canvasData.data[idx + 2] = gray; // Blue channel canvasData.data[idx + 3] = 255; // Alpha channel // add black border if(x < 8 || y < 8 || x > (canvasData.width - 8) || y > (canvasData.height - 8)) { canvasData.data[idx + 0] = 0; canvasData.data[idx + 1] = 0; canvasData.data[idx + 2] = 0; } } }
グレースケールの計算式は、グレー色 = 0.299 × 赤色 0.578 × 緑色 0.114 * 青色
読み出されるピクセル値の順序はRGBAであり、それぞれ赤、緑、青、アルファチャンネルを表します
処理されたデータはCanvasに再ロードする必要があります。コードは次のとおりです:
context.putImageData(canvasData, 0, 0);
プログラムの最終的な効果は次のとおりです:
完全なソース コードは次のとおりです:
コードは次のとおりです:
<script> window.onload = function() { var canvas = document.getElementById("myCanvas"); var image = document.getElementById("imageSource"); // re-size the canvas deminsion canvas.width = image.width; canvas.height = image.height; // get 2D render object var context = canvas.getContext("2d"); context.drawImage(image, 0, 0); var canvasData = context.getImageData(0, 0, canvas.width, canvas.height); alert(canvasData.width.toString()); alert(canvasData.height.toString()); // gray filter for ( var x = 0; x < canvasData.width; x++) { for ( var y = 0; y < canvasData.height; y++) { // Index of the pixel in the array var idx = (x + y * canvasData.width) * 4; var r = canvasData.data[idx + 0]; var g = canvasData.data[idx + 1]; var b = canvasData.data[idx + 2]; // calculate gray scale value var gray = .299 * r + .587 * g + .114 * b; // assign gray scale value canvasData.data[idx + 0] = gray; // Red channel canvasData.data[idx + 1] = gray; // Green channel canvasData.data[idx + 2] = gray; // Blue channel canvasData.data[idx + 3] = 255; // Alpha channel // add black border if(x < 8 || y < 8 || x > (canvasData.width - 8) || y > (canvasData.height - 8)) { canvasData.data[idx + 0] = 0; canvasData.data[idx + 1] = 0; canvasData.data[idx + 2] = 0; } } } context.putImageData(canvasData, 0, 0); // at coords 0,0 }; </script>Hello World!
<img id="imageSource" src="hanjiaren.jpg" alt="Canvas Source" /> <canvas id="myCanvas" >Gray Filter</canvas>
コード内のファイルは好きなものに置き換えることができます。見たい画像ファイル
HTML5 は、とても魔法のようです。プログラムは Google Chrome でのテストに合格しました。
最後のアドバイスとして、Google Chrome のセキュリティ チェックにより、ブラウザからの非ドメイン ファイルの読み取りと書き込みが自動的に禁止されます。
幸いなことに、その後。 Tomcat または任意の Web コンテナ サーバーで公開すると、Google ブラウザから効果を確認できます。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









HTML の表の境界線に関するガイド。ここでは、HTML でのテーブルの境界線の例を示しながら、テーブル境界線を定義する複数の方法について説明します。

HTML マージン左のガイド。ここでは、HTML margin-left の概要とその例、およびそのコード実装について説明します。

これは、HTML でのネストされたテーブルのガイドです。ここでは、テーブル内にテーブルを作成する方法をそれぞれの例とともに説明します。

HTML テーブル レイアウトのガイド。ここでは、HTML テーブル レイアウトの値と例および出力について詳しく説明します。

HTML 入力プレースホルダーのガイド。ここでは、コードと出力とともに HTML 入力プレースホルダーの例について説明します。

HTML でのテキストの移動に関するガイド。ここでは、概要、マーキー タグが構文でどのように機能するか、および実装例について説明します。

HTML オンクリック ボタンのガイド。ここでは、それらの紹介、動作、例、およびさまざまなイベントでの onclick イベントについてそれぞれ説明します。
