開発環境 メモ帳
実行環境 Microsoft Edge


to256.html
<!doctype html>
<head>
<title>to256</title>
</head>
 
<body>
<div id="drop" style="width:800px; height:150px; border:3px solid; padding:10px;"
 ondragover="onDragOver(event)" ondrop="onDrop(event)">
1. ここに画像ファイルをドロップします。<br>
2. 加工ボタンを押します。<br>
3. 加工後の画像を右クリックし画像を保存します。<br>
</div>
<br>
<button onclick="proc()">加工</button>
<p>
・加工後の画像<br>
<img id="img2"></img>
</p>
<p>
・オリジナル画像<br>
<img id="img1"></img>
</p>
<p>
・作業用キャンヴァス<br>
<canvas id="canvas"></canvas>
</p>
<script>
 
function proc()
{
	var width = img1.width;
	var height = img1.height;
 
	// 作業用キャンヴァスにオリジナル画像を転写
	canvas.width = width;
	canvas.height = height;
	var context = canvas.getContext("2d");
	context.drawImage(img1, 0, 0);
 
	// 画像データの加工
	var imageData = context.getImageData(0, 0, width, height);
	var data = imageData.data;
	for (var y = 0; y < height; y++) {
		for (var x = 0; x < width; x++) {
			var base = (y * width + x) * 4;
			data[base + 0] &= 0xC0;	// r 1100 0000
			data[base + 1] &= 0xE0;	// g 1110 0000
			data[base + 2] &= 0xC0;	// b 1100 0000
			data[base + 3] = 0xFF;	// a 1111 1111
		}
	}
	context.putImageData(imageData, 0, 0);
 
	img2.src = canvas.toDataURL("image/png");
}
 
function onDragOver(event)
{
	event.preventDefault();
}
 
function onDrop(event)
{
	var files = event.dataTransfer.files;
	var file = files[0];
	if (file.type.match("image.*")) {
		var reader = new FileReader();
		reader.onload = function(evt) {
			img1.src = evt.target.result;
		}
		reader.readAsDataURL(file);
	}
 
	event.preventDefault();
}
 
</script>
</body>
 
最終更新:2016年02月10日 20:24