操作像素A
1.绘制随机像素点
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<canvas id="canvas1" width="300" height="300" style="background-color:black"></canvas>
<input type="button" value="Draw" onclick="randomPixel()" />
<script type="text/javascript">
var canvas = document.getElementById("canvas1");
var context = canvas.getContext("2d");
var width = canvas.width;
var height = canvas.height;
var imageData = context.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() * 255);
imageData.data[p + 1] = parseInt(Math.random() * 255);
imageData.data[p + 2] = parseInt(Math.random() * 255);
imageData.data[p + 3] = parseInt(Math.random() * 255);
context.putImageData(imageData, 0, 0);
}
</script>
</body>
</html>
2.像素级别操作改变图形颜色
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="../Scripts/jquery-1.7.1.js"></script>
<script type="text/javascript">
$(function () {
Demo1();
})
function Demo1() {
var canvas = document.getElementById("canvas1");
var context = canvas.getContext("2d");
context.strokeStyle = "#f00";
context.beginPath();
context.arc(70, 18, 15, 0, Math.PI * 2, true);
context.closePath();
context.stroke();
context.beginPath();
context.arc(70, 38, 15, 0, Math.PI * 2, true);
context.closePath();
context.stroke();
var imageData;
imageData = context.getImageData(0, 0, canvas.width, canvas.height);
var pix = imageData.data;
for (i = 0; i < pix.length; i+=4) {
pix[i] = 0;// 红
pix[i + 1] = 0;// 绿
pix[i + 2] = 255;// 蓝
}
context.putImageData(imageData,0,0);
}
</script>
</head>
<body>
<canvas id="canvas1" width="500" height="300"></canvas>
</body>
</html>
3.反转颜色
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="../Scripts/jquery-1.7.1.js"></script>
<script type="text/javascript">
$(function () {
var canvas = document.getElementById("canvas1");
var context = canvas.getContext("2d");
var img = new Image();
img.onload = function () {
context.drawImage(img, 0, 0);
var data = context.getImageData(0, 0, canvas.width, canvas.height);
for (i = 0; i < data.width * data.height;i+=4) {
data.data[i] = 255 - data.data[i];
data.data[i+1] = 255 - data.data[i+1];
data.data[i+2] = 255 - data.data[i+2];
}
context.putImageData(data,0,0);
}
img.src = "../Images/apple.jpg";
})
</script>
</head>
<body>
<canvas id="canvas1" width="500" height="300"></canvas>
</body>
</html>
官方文档
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<style type="text/css">
canvas {
border:1px solid #ececf1;
}
</style>
<script type="text/javascript">
window.onload = function () {
var imageObj = new Image();
imageObj.onload = function () {
DrawImage(this);
};
imageObj.src = "../Images/2.jpg";
}
function DrawImage(imageObj) {
var canvas = document.getElementById("canvas1");
var context = canvas.getContext("2d");
var desX = 100;
var desY = 100;
var sourceWidth = imageObj.width;
var sourceHeight = imageObj.height;
context.drawImage(imageObj, desX, desY);
var imageData = context.getImageData(0, 0, canvas.width, canvas.height);
var data = imageData.data;
// 遍历像素
for (var i = 0; i < data.length; i += 4) {
data[i]=255-data[i];
data[i + 1]=255-data[i+1];
data[i + 2]=255-data[i+2];
}
// 方法二
for (var y = 0; y < sourceHeight; y++) {
for (var x = 0; x < sourceWidth; x++) {
var red = data[((sourceWidth * y) + x) * 4];
var green = data[((sourceWidth * y) + x) * 4+1];
var blue= data[((sourceWidth * y) + x) * 4+2];
}
}
context.putImageData(imageData,0,0);
}
</script>
</head>
<body>
<canvas id="canvas1" width="580" height="500" />
</body>
</html>

浙公网安备 33010602011771号