1. 色を理解する
実際、これらの画像はピクセルで構成されています。では、ピクセルとは何でしょうか?色は何ですか? (これら 2 つの質問をする人は、考えるのが好きな人に違いありません) ピクセルは、実際にはメモリ内の連続する 2 進ビットのセットに対応します。これは 2 進ビットなので、当然のことながら、各ビットの値は 0 または 0 のみです。もう1つ!このように、連続する 2 進ビットのセットは 0 と 1 によってさまざまな状況に組み合わせることができ、それぞれの組み合わせによってピクセルの色が決まります。まず下の写真を見てください
この写真は 6 つのピクセルを表し、合計 24 個の小さなボックスで構成されていることがわかります。
注: 画像内の小さなボックスは、8 バイナリビットであるバイトを表します。
したがって、各ピクセルは 4 バイトで構成されます。これら 4 つのバイトの意味も図に示されています:
最初のバイトはピクセルの赤の値を決定します 2 番目のバイトはピクセルの緑の値を決定します 3 番目のバイトはピクセルの青の値を決定します 4 番目のバイトはピクセルの透明度の値を決定します 各色の値のサイズは 0 から 255 までです (質問: なぜ 255 までしかできないのですか?) 透明度の値: 0 は完全に透明を表し、255 は完全に不透明を表します。 このように、(255, 0, 0, 255)を使用して、純粋な赤ピクセル
を表すことができます。メモリ内では、次のような32ビット文字列になります:11111111 00000000 00000000 11111111
2. ピクセルを操作する
色とピクセルの本質を理解すると、グラフィックスのより複雑な処理を実行できます。 ただし、HTML5には、setPixelやgetPixelのようなピクセルを直接操作するメソッドは現在提供されていませんが、ImageDataオブジェクト
を使用する方法もありますImageDataオブジェクトは、次の目的で使用されます。画像のピクセル値を保存するには、幅、高さ、データの 3 つの 属性 があり、画像のすべてのピクセル値が実際にデータに保存されます。 data 属性にピクセル値を保存する方法は、前の 画像
で見たものとまったく同じです:imageData.data[index*4 +0] imageData.data[index*4 +1] imageData.data[index*4 +2] imageData.data[index*4 +3]上記は、データ配列内の 4 つの連続した隣接する値
を取り出します。これら 4 つの値は、画像内の番目のインデックス + 1 ピクセルの赤、緑、青、透明度の値のサイズを表します。
注: インデックスは0から始まり、画像には幅×高さの合計ピクセルがあり、幅×高さ×4の合計値が配列に保存されますコンテキストobject Context には、Get および set ImageData オブジェクトを作成および読み取るための 3 つのメソッドがあり、それぞれ
createImageData
(width, height): メモリ内に指定されたサイズの ImageData オブジェクト (つまり、ピクセル配列) を作成します。オブジェクトはすべて黒で透明です。つまり、rgba(0,0,0,0)getImageData
(x, y, width, height): 指定された領域のピクセル配列を含む ImageData オブジェクトを返しますputImageData
(data, x, y ): ImageData オブジェクトを画面の指定された領域に描画します
3. 簡単な
画像処理 を操作するために必要な知識、おそらくいつか Chrome でPhotoShop をプレイすることになるでしょう。 プログラムはおそらく次のようになります:
1. セキュリティ エラー (Security_ERR: DOM EXCEPTION 18) が発生しないように、ブログの上部にバナーの背景画像を使用します。この例を実行したい場合は、独自の画像に変更する必要がある場合があります2. それぞれ GRBA の 4 つのコンポーネントを表す 4 つのスライド バーがあり、対応するカラー コンポーネントをドラッグします。画像が増えたり減ったりします4. 画像が透明になると、キャンバス要素の背景が表示されます(笑)。
思路:其实就是用 getImageData 方法,将你想改变的那一块区域的像素数组取出来,然后根据你拖动的滑动条和滑动条的数值,来更改那一块区域里所有像素对应颜色分量的值。处理完毕后再用 putImageData 方法绘制到画布上,就是这么简单。
下面是代码:
简单的图像处理 Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><canvas id="test1" width="507" height="348" style="background-image:url(http://images.cnblogs.com/cnblogs_com/myqiao/262115/r_2204793492575248335.jpg)">你的浏览器不支持 <canvas>标签, 请使用 Chrome 浏览器 或者 FireFox 浏览器</canvas> 红色:<input type="range" min="1" max="100" onchange="colorChange(event,0)"/> 绿色:<input type="range" min="1" max="100" onchange="colorChange(event,1)"/> 蓝色:<input type="range" min="1" max="100" onchange="colorChange(event,2)"/> 透明:<input type="range" min="1" max="100" onchange="colorChange(event,3)"/> <script type="text/javascript"> //获取上下文对象 var canvas = document.getElementById("test1"); var ctx = canvas.getContext("2d"); //画布的宽度和长度 var width = parseInt(canvas.getAttribute("width")); var height = parseInt(canvas.getAttribute("height")); //装入图像 var image = new Image(); image.onload =imageLoaded; //顶部背景图片 image.src = "/skins/Valentine/images/banner2.gif"; //用来保存像素数组的变量 var imageData=null; function imageLoaded() { // 将图片画到画布上 ctx.drawImage(image, 0, 0); //取图像的像素数组 imageData = ctx.getImageData(0, 0, width, height); } function colorChange(event,offset){ imageLoaded(); for (var y = 0; y < imageData.height; y++) { for (x = 0;x < imageData.width; x++) { //index 为当前要处理的像素编号 var index = y * imageData.width + x; //一个像素占四个字节,即 p 为当前指针的位置 var p = index * 4; //改变当前像素 offset 颜色分量的数值,offset 取值为0-3 var color = imageData.data[p + offset] * event.target.value / 50; // 颜色值限定在[0..255] color = Math.min(255, color); //将改变后的颜色值存回数组 imageData.data[p + offset]=color } } //输出到屏幕 ctx.putImageData(imageData, 0, 0); } </script>
四、绘制随机颜色的点
这个例子是在画布上随机选择一个点,然后再给他一个随机的颜色值,其实用到的方法和上面的例子大同小异,就是需求不同罢了。
下面是代码和程序实例:
随机颜色的点 Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><canvas id="test2" width="300" height="300" style=" background-color: black">你的浏览器不支持 <canvas>标签,请使用 Chrome 浏览器 或者 FireFox 浏览器</canvas> <input type="button" value="画随机点" onclick="interval=setInterval(randomPixel,1);" /> <input type="button" value="停止" onclick="clearInterval(interval);"/> <input type="button" value="清除" onclick="clearCanvas();"/> <script type="text/javascript"> //获取上下文对象 var canvas = document.getElementById("test2"); var ctx = canvas.getContext("2d"); //画布的宽度和长度 var width = parseInt(canvas.getAttribute("width")); var height = parseInt(canvas.getAttribute("height")); var imageData = ctx.createImageData(width, height); function randomPixel(){ var x= parseInt(Math.random()*width); var y= parseInt(Math.random()*height); var index = y * width + x; var p = index * 4; imageData.data[p + 0] = parseInt(Math.random() * 256); imageData.data[p + 1] = parseInt(Math.random() * 256); imageData.data[p + 2] = parseInt(Math.random() * 256); imageData.data[p + 3] =parseInt(Math.random() * 256); ctx.putImageData(imageData,0,0); } function clearCanvas(){ ctx.clearRect(0,0,width,height); imageData = ctx.createImageData(width, height); } </script>
以上が遊びながら学ぶHTML5 (3) ~ピクセルとカラー~の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

H5(HTML5)は、新しい要素とAPIを介してWebコンテンツと設計を改善します。 1)H5はセマンティックタグ付けとマルチメディアサポートを強化します。 2)キャンバスとSVGを導入し、Webデザインを濃縮します。 3)H5は、新しいタグとAPIを介してHTML機能を拡張することにより機能します。 4)基本的な使用には、それを使用したグラフィックの作成が含まれ、高度な使用法にはwebstorageapiが含まれます。 5)開発者は、ブラウザの互換性とパフォーマンスの最適化に注意を払う必要があります。

H5は多くの新しい機能と機能をもたらし、Webページのインタラクティブ性と開発効率を大幅に改善します。 1。SEOの強化などのセマンティックタグ。 2.マルチメディアサポートは、オーディオとビデオの再生とタグを簡素化します。 3. Canvas Drawingは、動的なグラフィックスの描画ツールを提供します。 4.ローカルストレージは、LocalStorageとSessionStorageを介してデータストレージを簡素化します。 5. Geolocation APIは、ロケーションベースのサービスの開発を促進します。

HTML5は5つの重要な改善をもたらします。1。セマンティックタグにより、コードの明確性とSEO効果が向上します。 2.マルチメディアサポートは、ビデオとオーディオの埋め込みを簡素化します。 3。フォームエンハンスメントは、検証を簡素化します。 4.オフラインおよびローカルストレージにより、ユーザーエクスペリエンスが向上します。 5。キャンバスとグラフィック機能は、Webページの視覚化を強化します。

HTML5のコア機能には、セマンティックタグ、マルチメディアサポート、オフラインストレージ、ローカルストレージ、フォームエンハンスメントが含まれます。 1。コードの読みやすさとSEO効果を改善するためのセマンティックタグなど。 2.ラベルでマルチメディアの埋め込みを簡素化します。 3。アプリケーションキャッシュやLocalStorageなどのオフラインストレージとローカルストレージは、ネットワークのない操作とデータストレージをサポートします。 4.フォームエンハンスメントでは、処理と検証を簡素化するための新しい入力タイプと検証プロパティを導入します。

H5は、さまざまな新機能と機能を提供し、フロントエンド開発の機能を大幅に向上させます。 1.マルチメディアサポート:メディアを埋め込んで要素を埋め込み、プラグインは必要ありません。 2。キャンバス:要素を使用して、2Dグラフィックとアニメーションを動的にレンダリングします。 3。ローカルストレージ:ユーザーエクスペリエンスを改善するために、ローカルストレージとセッションストレージを介して永続的なデータストレージを実装します。

H5とHTML5は異なる概念です。HTML5は、新しい要素とAPIを含むHTMLのバージョンです。 H5は、HTML5に基づくモバイルアプリケーション開発フレームワークです。 HTML5はブラウザを介してコードを解析およびレンダリングしますが、H5アプリケーションはコンテナを実行し、JavaScriptを介してネイティブコードと対話する必要があります。

HTML5の重要な要素には、最新のWebページの構築に使用される、、,,,,などが含まれます。 1.ヘッドコンテンツを定義します。2。リンクをナビゲートするために使用されます。3。独立した記事のコンテンツを表します。4。ページコンテンツを整理します。5。サイドバーコンテンツを表示します。

HTML5とHTML5の略語であるHTML5とH5の間に違いはありません。 1.HTML5はHTMLの5番目のバージョンであり、Webページのマルチメディア関数とインタラクティブ機能を強化します。 2.H5は、HTML5ベースのモバイルWebページまたはアプリケーションを参照するためによく使用され、さまざまなモバイルデバイスに適しています。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

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

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

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

ホットトピック









