1. 概要
キャンバスはWebページに画像を表示するために使用され、コンテンツをカスタマイズできます。基本的にはビットマップです。 (ビットマップ) Canvas
APIは、Web ページ上で画像コンテンツをリアルタイムに生成するために使用されます。これには、HTTP リクエストの数が削減され、量が削減されるという利点があります。 Web ページの読み込み時間を短縮し、画像をリアルタイムで処理できます 使用する前に、まず Canvas Web 要素を作成する必要があります
<canvas id="myCanvas" width="400" height="200"> 您的浏览器不支持canvas! </canvas>
ブラウザがキャンバスをサポートしていない場合は、 Canvas タグの真ん中に「このブラウザは Canvas をサポートしていません!」というテキストが表示されます。
次に、
JavaScriptを使用して Canvas の DOM オブジェクトを取得します。 getContext メソッドがデプロイされているかどうかを確認して、ブラウザーが Canvas API をサポートしているかどうかを確認します。var canvas = document.getElementById('myCanvas');
getContext ('2d') メソッドを使用して、フラット イメージのコンテキストを初期化します。
if (canvas.getContext) { //some code here}
次に、キャンバスの中央にフラット イメージを生成します。 .
2. Drawing method
(1) Fill color
Set the fill color. (2) Draw a rectangle
Draw a solid rectangle.var ctx = canvas.getContext('2d');
Draw a hollow rectangle.
ctx.fillStyle = "#000000";//设置填充色为黑色ctx.strokeStyle = "#FF6600"; //设置笔触颜色
Clear
ctx.fillStyle = "#000000";//填充颜色,即矩形颜色ctx.fillRect(x, y, width, height);(3) パスを描画する
ctx.strokeStyle = "#FF6600"; //笔触颜色,即矩形边框颜色ctx.strokeRect(x, y, width, height);
円と扇形を描画するメソッド ctx.clearRect(x, y, width, height);
arc メソッドの x と y パラメータは中心の座標です。円の半径、radius は半径、startAngle と endAngle はセクターの開始角度と終了角度 (度で表されます)、反時計回りは描画を反時計回り (true) または時計回り (false) のどちらで描画するかを示します。実線の円
ctx.beginPath(); //开始路径绘制 ctx.moveTo(20, 20); //设置路径起点 ctx.lineTo(200, 20); //绘制一条到200, 20的直线 ctx.lineWidth = 1.0; //设置线宽 ctx.strokeStyle = "#CC0000"; //设置线的颜色 ctx.stroke(); //进行线的着色,这时整条线才变得可见中空の円を描画します (5) テキストを描画します
テキストを追加するには、fillText メソッドを使用し、白抜きの文字を追加するには、strokingText メソッドを使用します。使用する前に、フォント、テキストを設定する必要があります。方向、色、その他の
属性。
ctx.arc(x, y, radius, startAngle, endAngle, anticlockwise);
fillText メソッドはテキストの改行をサポートしていません。つまり、複数行のテキストを生成したい場合は、 を呼び出すだけです。 fillText メソッドを複数回実行します。
2.1 Gradient
createLinearGradient メソッドの参照は (x1, y1, x2, y2) です。ここで、x1 と y1 は始点の座標、x2 と y2 は終点です。さまざまな座標値を使用して、上から下、左から右などのグラデーションを生成できます。
addColorStop メソッドのパラメーターは (offset, color) です。ここで、offset は 0.0 から 1.0 の範囲の浮動小数点値で、グラデーションの開始点と終了点の間の部分を表します。オフセット 0 が対応します。 Offset は終点に対応し、color は CSS カラー値の文字列表現です。使用方法は以下の通りです:
ctx.beginPath(); ctx.arc(60, 60, 50, 0, Math.PI*2, true); ctx.fillStyle = "#000000"; ctx.fill();2.2 影
ctx.beginPath(); ctx.arc(60, 60, 50, 0, Math.PI*2, true); ctx.lineWidth = 1.0; ctx.strokeStyle = "#000"; ctx.stroke();3, 画像処理方法3.1 画像を挿入canvasは画像ファイルをキャンバスに挿入する方法です。キャンバスで再描画するには、drawImage メソッドを使用します。
ctx.font = "Bold 20px Arial"; //设置字体 ctx.textAlign = "left"; //设置对齐方式 ctx.fillStyle = "#008600"; //设置填充颜色 ctx.fillText("Hello!", 10, 50); //设置字体内容,以及在画布上的位置 ctx.strokeText("Hello!", 10, 100); //绘制空心字
画像の読み込みに時間がかかるため、画像の読み込みが完了してからでないとdrawImageメソッドを呼び出すことができないため、上記のコードを書き直す必要があります。
var myGradient = ctx.createLinearGradient(0, 0, 0, 160); myGradient.addColorStop(0, "#BABABA"); myGradient.addColorStop(1, "#636363");
drawImage() メソッドは 3 つのパラメータを受け取ります。最初のパラメータは画像ファイルの DOM 要素 (つまり、
img タグ)、2 番目と 3 番目のパラメータは画像の左上隅の座標です。上記の例の Canvas 要素の , (0, 0) は、画像の左上隅を Canvas 要素の左上隅に配置することを意味します。
3.2 Canvas の内容を読み取る
getImageData メソッドを使用して Canvas の内容を読み取り、各ピクセルの情報を含むオブジェクトを返すことができます。 ctx.fillStyle = myGradient;
ctx.fillRect(10, 10, 200, 100);
imageDataオブジェクトにはデータ属性があり、その値は
一次元配列です。この配列の値は、順番に各ピクセルの赤、緑、青、およびアルファ チャネルの値です。したがって、配列の長さは、画像のピクセル幅 * 画像のピクセル高さ * 4 に等しくなります。 、各値の範囲は 0 ~ 255 です。この配列は読み取りだけでなく書き込みも可能であるため、この配列の値を操作することで、画像を操作する目的を達成できます。この配列を変更した後、putImageData メソッドを使用して、配列の内容を Canvas に書き戻します。
ctx.shadowOffsetX = 10; //设置水平位移 ctx.shadowOffsetY = 10; //设置垂直位移 ctx.shadowBlur = 5; //设置模糊度 ctx.shadowColor = "rgba(0, 0, 0, 0.5)"; //设置阴影颜色 ctx.fillStyle = "#CC0000"; ctx.fillRect(10, 10, 200, 100);3.3 ピクセル処理 フィルターがピクセルを処理する
関数であると仮定すると、Canvas の処理プロセス全体は次のコードで表すことができます。 var img = new Image();
img.src = "image.png";
ctx.drawImage(img, 0, 0); //设置对应的图像对象,以及它在画布上的位置
以下は一般的な治療法です。
(1)灰度效果
灰度图(grayscale)就是取红、绿、蓝三个像素值的算术平均值,这实际上将图像转成了黑白形式。假定d[i]是像素数组中一个像素的红色值,则d[i+1]为绿色值,d[i+2]为蓝色值,d[i+3]就是alpha通道值。转成灰度的算法,就是将红、绿、蓝三个值相加后除以3,再将结果写回数组。
grayscale = function(pixels) { var d = pixels.data; for (var i = 0; i < d.length; i += 4) { var r = d[i]; var g = d[i + 1]; var b = d[i + 2]; d[i] = d[i + 1] = d[i + 2] = (r + g + b) / 3; } return pixels; }
(2)复古效果
复古效果(sepia)则是将红、绿、蓝三个像素,分别取这三个值的某种加权平均值,使得图像有一种古旧的效果。
sepia = function(pixels) { var d = pixels.data; for (var i = 0; i < d.length; i +=4) { var r = d[i]; var g = d[i + 1]; var b = d[i + 2]; d[i] = (r * 0.393) + (g * 0.769) + (b * 0.189); //red d[i + 1] = (r * 0.349) + (g * 0.686) + (b * 0.168); //green d[i + 2] = (r * 0.272) + (g * 0.534) + (b * 0.131); //blue } return pixels; }
(3)红色蒙版效果
红色蒙版指的是,让图像呈现一种偏红的效果。算法是将红色通道设为红、绿、蓝三个值的平均值,而将绿色通道和蓝色通道都设为0。
red = function(pixels) { var d = pixels.data; for (var i = 0; i < d.length; i += 4) { var r = d[i]; var g = d[i + 1]; var b = d[i + 2]; d[i] = (r + g + b) / 3; //红色通道取平均值 d[i + 1] = d[i + 2] = 0; } return pixels; }
(4)亮度效果
亮度效果(brightness)是指让图像变得更亮或更暗。算法将红色通道、绿色通道、蓝色通道,同时加上一个正值或负值。
brightness = function(pixels, delta) { var d = pixels.data; for (var i = 0; i < d.length; i += 4) { d[i] += delta; //red d[i + 1] += delta; //green d[i + 2] += delta; //blue } return pixels; }
(5)反转效果
反转效果(invert)是指图片呈现一种色彩颠倒的效果。算法为红、绿、蓝通道都取各自的相反值(255 - 原值)。
invert = function(pixels) { var d = pixels.data; for (var i = 0; i < d.length; i += 4) { d[i] = 255 - d[i]; d[i + 1] = 255 - d[i + 1]; d[i + 2] = 255 - d[i + 2]; } return pixels; }
3.4 将Canvas转化为图像文件
对图像数据作出修改以后,可以使用toDataURL方法,将Canvas数据重新转化成一般的图像文件形式。
<p style="margin-bottom: 7px;">function convertCanvasToImage(canvas) { <br/>var image = new Image();<br/> image.src = canvas.toDataURL("image/png"); <br/> return image;<br/>}</p>
4、保存和恢复上下文
save方法用于保存上下文环境,restore方法用于恢复到上一次保存的上下文环境。
ctx.save(); ctx.shadowOffsetX = 10; ctx.shadowOffsetY = 10; ctx.shadowBlur = 5; ctx.shadowColor = "rgba(0, 0, 0, 0.5)"; ctx.fillStyle = "#CC0000"; ctx.fillRect(10, 10, 150, 150); ctx.restore(); ctx.fillStyle = "#000000"; ctx.fillRect(180, 10, 150, 100);
上面的代码一共绘制了两个矩形,前一个有阴影,后一个没有。
以上がHTML5 の新しいラベル Canvas の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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ページまたはアプリケーションを参照するためによく使用され、さまざまなモバイルデバイスに適しています。

HTML5は、W3Cによって標準化されたHyperText Markup言語の最新バージョンです。 HTML5は、新しいセマンティックタグ、マルチメディアサポート、フォームの強化、Web構造の改善、ユーザーエクスペリエンス、SEO効果を導入します。 HTML5は、Webページ構造をより明確にし、SEO効果をより良くするために、、、、、、などの新しいセマンティックタグを導入します。 HTML5はマルチメディア要素をサポートしており、サードパーティのプラグインは不要で、ユーザーエクスペリエンスと読み込み速度が向上します。 HTML5はフォーム関数を強化し、ユーザーエクスペリエンスを向上させ、フォーム検証効率を向上させるなどの新しい入力タイプを導入します。

クリーンで効率的なHTML5コードを書き込む方法は?答えは、タグのセマンティック、構造化されたコード、パフォーマンスの最適化、一般的な間違いを回避することにより、一般的な間違いを避けることです。 1.コードの読みやすさとSEO効果を改善するには、セマンティックタグなどを使用します。 2。適切なインデントとコメントを使用して、コードを構造化して読みやすいままにします。 3.不必要なタグを減らし、CDNを使用してコードを圧縮することにより、パフォーマンスを最適化します。 4.タグが閉じていないなどの一般的な間違いを避け、コードの有効性を確認してください。


ホット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 脆弱性のいくつかを実践することです。このソフトウェアは、

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

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

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

ホットトピック









