<figure class="wp-block-video"></figure>



<p class="wp-block-paragraph">canvas à¸à¸·à¸ tags à¸à¸µà¹à¹à¸à¸´à¸à¸à¸¶à¹à¸à¹à¸«à¸¡à¹à¹à¸ html à¹à¸§à¸à¸£à¹à¸à¸±à¹à¸ 5 หรืà¸à¸à¸µà¹à¹à¸£à¸²à¸¡à¸±à¸à¹à¸£à¸µà¸¢à¸à¸à¸´à¸à¸à¸²à¸à¸§à¹à¸² html5 à¸à¸§à¸²à¸¡à¸ªà¸²à¸¡à¸²à¸£à¸à¸à¸à¸ html5 canvas à¸à¸·à¸ à¹à¸£à¸²à¸à¸°à¸ªà¸²à¸¡à¸²à¸£à¸à¸à¸±à¸à¸à¸²à¸£à¸à¸±à¸à¸§à¸±à¸à¸à¸¸à¸à¸µà¹à¸à¸¹à¸à¸§à¸²à¸à¸¥à¸à¸à¸ canvas à¹à¸à¹à¸¥à¸°à¹à¸à¸µà¸¢à¸à¸¡à¸²à¸à¸à¸¶à¹à¸ มาà¸à¸à¸§à¹à¸² html element à¸à¸±à¹à¸§à¹à¸ </p>



<p class="wp-block-paragraph">canvas à¸à¸¶à¸à¹à¸«à¸¡à¸²à¸°à¸à¸±à¸à¸à¸²à¸£à¸à¸±à¸à¸à¸² Game, Animation Frame By Frame, Web Application à¹à¸à¸à¸à¸à¸§à¸²à¸¡à¸à¸§à¸²à¸¡à¸à¸°à¸¡à¸²à¹à¸à¸°à¸à¸³à¸à¸²à¸£à¸à¸±à¸à¹à¸«à¸¥à¸à¸£à¸¹à¸à¸à¸²à¸à¹à¸à¸£à¸·à¹à¸à¸à¹à¸£à¸² à¹à¸à¹à¸ªà¸à¸à¸à¸¥à¸à¸ canvas à¸à¸²à¸à¸à¸±à¹à¸à¹à¸à¹à¸à¸§à¸²à¸¡à¸ªà¸²à¸¡à¸²à¸£à¸à¸à¸à¸ canvas context2d à¹à¸à¸à¸²à¸£à¸¥à¸à¸à¸·à¹à¸à¸«à¸¥à¸±à¸à¸à¸à¸à¸£à¸¹à¸</p>



<h2 class="wp-block-heading">à¸à¸±à¸à¹à¸«à¸¥à¸à¸£à¸¹à¸à¹à¸ªà¸à¸à¸à¸¥à¸à¸ Canvas</h2>



<ul class="wp-block-list"><li>à¹à¸£à¸´à¹à¸¡à¸à¹à¸à¸ªà¸£à¹à¸²à¸ canvas à¸à¸³à¸«à¸à¸à¸à¸§à¸²à¸¡à¸à¸§à¹à¸²à¸à¹à¸¥à¸°à¸à¸§à¸²à¸¡à¸ªà¸¹à¸ à¹à¸¥à¸°à¸ªà¸£à¹à¸²à¸ input สำหรัภupload à¹à¸à¸¥à¹</li></ul>



<pre class="wp-block-preformatted"><canvas id="canvas" width="640" height="480"></canvas>
<input type="file" id="fileupload"></pre>



<ul class="wp-block-list"><li>à¹à¸à¸ªà¹à¸§à¸à¸à¸à¸ javascript à¹à¸£à¸µà¸¢à¸à¹à¸à¹à¸à¸²à¸ canvas à¹à¸¥à¸°à¹à¸à¹ getContext2D สำหรัภContext2D à¹à¸à¹à¸à¸à¸³à¸ªà¸±à¹à¸à¸à¸µà¹à¸à¸°à¸à¸³à¹à¸«à¹à¹à¸£à¸²à¸ªà¸²à¸¡à¸²à¸£à¸ à¸à¸±à¸à¸à¸²à¸£à¸à¸±à¸ graphic à¹à¸à¸ 2 มิà¸à¸´à¸à¸ canvas à¹à¸à¹ à¸à¸±à¹à¸à¸à¸²à¸£à¸§à¸²à¸ à¸à¸²à¸£à¸à¸¶à¸ pixel </li></ul>



<pre class="wp-block-code"><code>var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');</code></pre>



<ul class="wp-block-list"><li>à¹à¸à¸´à¹à¸¡ event สำหรัà¸à¸à¸±à¸à¹à¸«à¸¥à¸à¸£à¸¹à¸à¹à¸¥à¸°à¸ªà¸£à¹à¸²à¸à¸à¸±à¸à¸à¹à¸à¸±à¹à¸à¸£à¸±à¸à¸à¹à¸à¸¡à¸¹à¸¥à¸£à¸¹à¸ à¸à¸²à¸à¸à¸±à¹à¸à¹à¸à¹ context2d à¹à¸à¸à¸²à¸£à¸§à¸²à¸à¸£à¸¹à¸à¸¥à¸à¸à¸ canvas</li></ul>



<pre class="wp-block-preformatted">function handleImage(e){
 var reader = new FileReader();
 reader.onload = function(event){
 var img = new Image();
 img.onload = function(){
 var hRatio = canvas.width / img.width ;
 var vRatio = canvas.height / img.height ;
 var ratio = Math.min(hRatio, vRatio);
 ctx.drawImage(img, 0,0, img.width, img.height, 0,0,img.width*ratio, img.height*ratio);
 }
 img.src = event.target.result;
 }
 reader.readAsDataURL(e.target.files[0]); 
}
document.getElementById('fileupload').onchange = handleImage;</pre>



<h2 class="wp-block-heading">ลà¸à¸à¸·à¹à¸à¸«à¸¥à¸±à¸à¸à¸à¸à¸£à¸¹à¸à¸à¹à¸§à¸¢ Context2D</h2>



<ul class="wp-block-list"><li>หลัà¸à¸à¸²à¸à¸à¸µà¹à¹à¸£à¸²à¹à¸à¹à¸£à¸¹à¸à¸à¸µà¹à¹à¸ªà¸à¸à¸à¸ canvas à¹à¸£à¸µà¸¢à¸à¸£à¹à¸à¸¢à¹à¸¥à¹à¸§ à¹à¸à¸à¸±à¹à¸à¸à¸à¸à¸à¹à¸à¹à¸ à¸à¸°à¸à¸³à¸à¸²à¸£à¸¥à¸à¸à¸·à¹à¸à¸«à¸¥à¸±à¸à¸à¸à¸à¸£à¸¹à¸ à¹à¸à¸¢à¸à¸±à¹à¸à¸à¸à¸à¸à¸²à¸£à¸¥à¸à¸à¸·à¹à¸à¸«à¸¥à¸±à¸à¸à¸à¸à¸£à¸¹à¸à¸à¸±à¹à¸ à¹à¸¡à¹à¹à¸à¹à¸¡à¸µà¸à¸°à¹à¸£à¸à¸±à¸à¸à¹à¸à¸à¸à¸£à¸±à¸ à¸à¹à¸à¸à¸à¸·à¹à¸à¸à¹à¸à¸à¹à¸à¹à¸²à¹à¸à¸à¹à¸à¸à¸§à¹à¸² รูà¸à¹à¸à¹à¸¥à¸°à¸£à¸¹à¸à¸à¸°à¸à¸£à¸°à¸à¸à¸à¹à¸à¸à¹à¸§à¸¢à¸à¹à¸² rgba à¸à¸·à¸<ul><li><strong>R = red channel</strong> à¸à¹à¸²à¸ªà¸µà¹à¸à¸ à¹à¸«à¹à¸à¹à¸²à¸à¸±à¸§à¹à¸¥à¸à¸à¸±à¹à¸à¹à¸à¹ 0 &#8211; 255</li><li><strong>G = green channel</strong> à¸à¹à¸²à¸ªà¸µà¹à¸à¸µà¸¢à¸§ à¹à¸«à¹à¸à¹à¸²à¸à¸±à¸§à¹à¸¥à¸à¸à¸±à¹à¸à¹à¸à¹ 0 &#8211; 255</li><li><strong>B = blue channel</strong> à¸à¹à¸²à¸ªà¸µà¸à¹à¸³à¹à¸à¸´à¸ à¹à¸«à¹à¸à¹à¸²à¸à¸±à¸§à¹à¸¥à¸à¸à¸±à¹à¸à¹à¸à¹ 0 &#8211; 255</li><li><strong>A = alpha channel</strong> à¸à¹à¸²à¸à¸§à¸²à¸¡à¹à¸à¸£à¸à¹à¸ª à¹à¸«à¹à¸à¹à¸²à¸à¸±à¸§à¹à¸¥à¸à¸à¸±à¹à¸à¹à¸à¹ 0 &#8211; 1 </li></ul></li></ul>



<ul class="wp-block-list"><li>à¸à¸²à¸à¸à¹à¸à¸¡à¸¹à¸¥à¸à¹à¸²à¸à¸à¸à¹à¸£à¸²à¸à¸à¸à¸à¸à¸°à¸à¸¶à¸à¸ าà¸à¸à¸à¸à¹à¸¥à¹à¸§à¹à¸à¹à¹à¸«à¸¡à¸à¸£à¸±à¸à¸§à¹à¸²à¸à¸°à¹à¸à¸¥à¸µà¹à¸¢à¸à¸à¹à¸²à¸ªà¹à¸§à¸à¹à¸«à¸à¸à¸à¸à¸£à¸¹à¸ à¹à¸à¸·à¹à¸à¸¥à¸à¸à¸·à¹à¸à¸«à¸¥à¸±à¸à¸à¸à¸à¹à¸£à¸² à¸à¸±à¹à¸à¸à¹à¸à¸·à¸à¸à¹à¸² A หรืภAlpha channel à¸à¸±à¹à¸à¹à¸à¸ à¹à¸à¹à¸à¹à¸à¸à¸à¸µà¹à¹à¸£à¸²à¸à¸°à¸¥à¸à¸à¹à¸² alpha à¹à¸«à¹à¹à¸à¹à¸ 0 à¹à¸£à¸²à¸à¹à¸à¸à¸£à¸¹à¹à¸à¹à¸à¸à¸§à¹à¸² pixel à¹à¸«à¸à¸à¸à¸£à¸¹à¸à¸à¸·à¸à¸ªà¹à¸§à¸à¸à¸à¸ background วิà¸à¸µà¸à¸²à¸£à¸«à¸²à¸§à¹à¸² pixel à¸à¸³à¹à¸«à¸à¹à¸à¹à¸«à¸à¸à¸à¸£à¸¹à¸à¸à¸·à¸ pixel à¸à¸µà¹à¹à¸à¹à¸à¸ªà¹à¸§à¸à¸à¸à¸à¸à¸·à¹à¸à¸«à¸¥à¸±à¸ วิà¸à¸µà¸à¸²à¸£à¸à¸·à¸à¸à¸²à¸£ à¸à¸³à¸à¹à¸² rgb à¹à¸à¸à¸à¸£à¸¹à¸ à¹à¸à¹à¸à¸¥à¸à¹à¸à¹à¸à¸à¹à¸²à¸ªà¸µà¹à¸à¸ hex à¸à¸²à¸à¸à¸±à¹à¸ loop à¹à¸à¸·à¹à¸à¸«à¸²à¸à¹à¸² hex à¸à¸µà¹à¸¡à¸µà¸à¸³à¸à¸§à¸à¸¡à¸²à¸à¸à¸µà¹à¸ªà¸¸à¸à¸à¸à¸£à¸¹à¸ à¹à¸£à¸²à¸à¸°à¹à¸à¹à¸à¹à¸²à¸ªà¸µà¹à¸à¸ hex à¸à¸²à¸¡à¸¥à¸³à¸à¸±à¸ 1 2 3 à¹à¸¥à¸°à¸à¸³à¸à¹à¸²à¸ªà¸µ 1 2 3 à¸à¸²à¸¡à¸¥à¸³à¸à¸±à¸à¸à¸±à¹à¸à¹à¸à¸¥à¸à¸à¹à¸² Alpha channel à¹à¸«à¹à¹à¸à¹à¸²à¸à¸±à¸ 0</li></ul>



<ul class="wp-block-list"><li>à¹à¸à¹à¸à¸³à¸ªà¸±à¹à¸ getImageData à¹à¸à¸·à¹à¸à¸à¸¶à¸ pixel à¸à¸±à¹à¸à¸«à¸¡à¸à¸à¸à¸£à¸¹à¸à¸¡à¸² loop หาà¸à¹à¸² rgba</li></ul>



<pre class="wp-block-preformatted">var image = ctx.getImageData(0,0,img.width*ratio, img.height*ratio);
var imageData = image.data;
var length = imageData.length;
for (var i=0; i < length; i++) {
 var r = imageData[i];
 var g = imageData[i+1];
 var b = imageData[i+2];
 var a = imageData[i+3];
}</pre>



<ul class="wp-block-list"><li>à¸à¸²à¸à¸à¸±à¹à¸à¹à¸à¸¥à¸à¸à¹à¸² rgba à¹à¸à¹à¸à¸à¹à¸²à¸ªà¸µà¹à¸à¸ hex à¸à¹à¸à¸ </li></ul>



<pre class="wp-block-preformatted">for (var i=0; i < length; i++) {
 var r = imageData[i];
 var g = imageData[i+1];
 var b = imageData[i+2];
 var a = imageData[i+3];
 var hex = RGBtoHEX(parseInt(r),parseInt(g),parseInt(b));
}
function RGBtoHEX(r,g,b){
	return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b);
}
function componentToHex(c) {
 var hex = c.toString(16);
 return hex.length == 1 ? "0" + hex : hex;
}</pre>



<ul class="wp-block-list"><li>à¸à¸³à¸à¹à¸²à¸ªà¸µà¹à¸à¸ hex à¸à¸µà¹à¹à¸à¹à¸à¸²à¸à¸à¸²à¸£ loop pixel à¸à¸±à¹à¸à¸«à¸¡à¸à¸à¸à¸à¸£à¸¹à¸ ( หรืà¸à¸à¸£à¸´à¸ ๠à¹à¸¡à¹à¸à¸³à¹à¸à¹à¸à¸à¹à¸à¸ loop à¸à¸¸à¸ pixel à¸à¹à¹à¸à¹ à¸à¸²à¸à¸à¸°à¹à¸à¹ row à¹à¸£à¸ à¸à¸à¸ pixel à¸à¹à¸à¸à¸à¸°à¸à¸²à¸à¹à¸à¸²à¸à¹à¸²à¸ªà¸µà¹à¸à¹ ) à¹à¸à¹à¸à¸µà¸¢à¸à¸à¸±à¸à¸à¹à¸²à¸ªà¸µ hex à¸à¸·à¹à¸à¸«à¸¥à¸±à¸à¸à¸à¸à¸£à¸¹à¸à¸ าภà¸à¸µà¹à¹à¸£à¸²à¹à¸à¹à¸à¸²à¸à¸à¸µà¹à¸à¸à¸´à¸à¸²à¸¢à¹à¸§à¹à¹à¸à¸à¹à¸ 2 à¸à¹à¸²à¸à¹à¸²à¸à¸£à¸à¸à¸±à¸ à¹à¸«à¹à¹à¸£à¸²à¸à¸³à¸à¸²à¸£à¸¥à¸à¸à¹à¸² alpha channel à¹à¸à¹à¸ 0 à¹à¸¥à¸°à¹à¸à¹à¸à¸³à¸ªà¸±à¹à¸ putImageData à¹à¸à¸·à¹à¸à¸à¸·à¸à¸à¹à¸² pixel à¹à¸«à¸¡à¹à¸à¸¥à¸±à¸à¹à¸à¸à¸µà¹à¸£à¸¹à¸à¹à¸à¸´à¸¡ à¸à¸°à¹à¸à¹ code à¸à¸±à¹à¸à¸«à¸¡à¸ à¸à¸²à¸¡à¸à¹à¸²à¸à¸¥à¹à¸²à¸à¸à¸£à¸±à¸</li></ul>



<pre class="wp-block-preformatted">var color_code_for_remove = "#fbe88c";
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
function handleImage(e){
 var reader = new FileReader();
 reader.onload = function(event){
 var img = new Image();
 img.onload = function(){
 var hRatio = canvas.width / img.width ;
 var vRatio = canvas.height / img.height ;
 var ratio = Math.min(hRatio, vRatio);
 ctx.drawImage(img, 0,0, img.width, img.height, 0,0,img.width*ratio, img.height*ratio);

 var image = ctx.getImageData(0,0,img.width*ratio, img.height*ratio);
 var imageData = image.data;
 var length = imageData.length;
 for (var i=0; i < length; i++) {
 var r = imageData[i];
 var g = imageData[i+1];
 var b = imageData[i+2];
 var a = imageData[i+3];
 var hex = RGBtoHEX(parseInt(r),parseInt(g),parseInt(b));
 if(hex == color_code_for_remove){
 imageData[i+3] = 0;
 }
 }
 
 image.data = imageData;
 ctx.putImageData(image, ((img.height*ratio)/2)+130, 0);
 }
 img.src = event.target.result;
 }
 reader.readAsDataURL(e.target.files[0]); 
}

function RGBtoHEX(r,g,b){
	return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b);
}
function componentToHex(c) {
 var hex = c.toString(16);
 return hex.length == 1 ? "0" + hex : hex;
}</pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"></p>

html5 canvas อัพโหลด และ ลบพื้นหลังของรูป

html5-canvas-อัพโหลด-และ-ลบพื้นหลังของรูป
