あなたのイメージをチェックします✅
12543 ワード
最近では、キャンバスと旅をしており、以下の要素を学びました. Getting started with the HTML canvas Vanilla JavaScript save canvas as an image Vanilla JavaScript colouring our canvas elements 🌈 Vanilla JavaScript images in canvas Vanilla JavaScript canvas images to black and white 今日、私たちは間接的にキャンバスを使って何かをしています.
我々はチェックボックスアートを作成している!✅
私は、これが公式芸術形式であるかどうか、わかりません、しかし、現在、それはそうです.
結果は次のようになります.
HTMLに関しては、サンプル画像、キャンバスを使用して出力部を出力する必要があります.
我々はスタイルにチェックボックスを使用しているので、私はそれらをお互いにスナップしてそれらを浮かせている.
と使用
BRは実際にはフロートのクリアとして動作します.
まず、すべての変数を定義しましょう.
次に、我々はキャンバスにイメージを加えることができます
ので、今私たちのキャンバスを持っているイメージが描かれている.それから、それが2番目の荷であるかどうかチェックしなければならなくて、その荷の中で魔法をし始めます.
ImageData APIが私たちに与えるので、主なループはあらゆる4つの要素の上でループだけです
それから、我々は我々の色を数えます
そして、このピクセルが大きいか、383(255 + 255 + 255の半分)であるかどうかチェックすることによって、このピクセルが黒か白いピクセルかどうかチェックしてください.
それから、チェックボックスを作ります、そして、我々のピクセルが黒いならば、我々はチェックします.
最後に、出力divにチェックボックスを追加し、必要に応じて行を追加します.
そこで、このcodepenの上で遊びをしてください.
ImageData APIだけでなく、キャンバス、非常に良いサポートを持っている!
私のブログを読んでくれてありがとう.私の電子メール会報を購読して、接続してくださいFacebook or
我々はチェックボックスアートを作成している!✅
私は、これが公式芸術形式であるかどうか、わかりません、しかし、現在、それはそうです.
結果は次のようになります.
HTML構造
HTMLに関しては、サンプル画像、キャンバスを使用して出力部を出力する必要があります.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1600097347472/FaJTB7UrN.jpeg" id="eeveelutions" />
<canvas id="canvas" width="100" height="100"></canvas>
<div id="output"></div>
この場合、イメージは200x200
キャンバスは100x100
出力が400x400
.CSSスタイリング
我々はスタイルにチェックボックスを使用しているので、私はそれらをお互いにスナップしてそれらを浮かせている.
と使用
<br />
新しい行を作成するにはBRは実際にはフロートのクリアとして動作します.
body {
display: flex;
align-items: center;
justify-content: center;
height: 100vh;
margin: 0;
padding: 0;
}
canvas {
opacity: 0;
}
input {
width: 4px;
height: 4px;
margin: 0;
padding: 0;
float: left;
}
br {
clear: both;
}
#output {
width: 400px;
line-height: 0px;
}
私たちのキャンバス、我々は不透明度を0に設定することによって隠れている.ジャバスクリプト
まず、すべての変数を定義しましょう.
const img = document.getElementById("eeveelutions");
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
const output = document.getElementById("output");
let loaded = 0;
今、我々はそれを行う前に我々のイメージロードを聞く必要があります.img.onload = function () {
loaded++;
// Do stuff
};
我々はそれが2回、実際の負荷を発射し、一度キャンバス上に描画されるので、画像がロードされるときにカウントされます.次に、我々はキャンバスにイメージを加えることができます
ctx.drawImage(img, 0, 0, 100, 100);
このパラメータは以下の通りです.( source , x , y , width , height )ので、今私たちのキャンバスを持っているイメージが描かれている.それから、それが2番目の荷であるかどうかチェックしなければならなくて、その荷の中で魔法をし始めます.
if (loaded > 1) {
// The second draw on the canvas
}
それから、キャンバスからimagedataを得ることができます.( x , y , width , height )const imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);
関数の残りの部分を示しますlet j = 0;
for (i = 0; i < imgData.data.length; i += 4) {
let count = imgData.data[i] + imgData.data[i + 1] + imgData.data[i + 2];
let _break = document.createElement("br");
let checkbox = document.createElement("INPUT");
checkbox.setAttribute("type", "checkbox");
checkbox.checked = true;
if (count > 383) checkbox.checked = false;
output.appendChild(checkbox);
j++;
if (j === 100) {
j = 0;
output.appendChild(_break);
}
}
私たちはj
行をカウントするためのパラメータですので、100行ごとに1行ですので、<br />
要素.ImageData APIが私たちに与えるので、主なループはあらゆる4つの要素の上でループだけです
rgba
各ピクセルの値、4つの値を1ピクセルを定義します.それから、我々は我々の色を数えます
rgba
最初の3(R G B)を加えることによるピクセル.そして、このピクセルが大きいか、383(255 + 255 + 255の半分)であるかどうかチェックすることによって、このピクセルが黒か白いピクセルかどうかチェックしてください.
それから、チェックボックスを作ります、そして、我々のピクセルが黒いならば、我々はチェックします.
最後に、出力divにチェックボックスを追加し、必要に応じて行を追加します.
そこで、このcodepenの上で遊びをしてください.
ブラウザサポート
ImageData APIだけでなく、キャンバス、非常に良いサポートを持っている!
読んでいただきありがとうございます、接続しましょう!
私のブログを読んでくれてありがとう.私の電子メール会報を購読して、接続してくださいFacebook or
Reference
この問題について(あなたのイメージをチェックします✅), 我々は、より多くの情報をここで見つけました https://dev.to/dailydevtips1/checkboxify-your-images-with-javascript-25dfテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol